哎哟。你承担了一项重大工作。您是否绝对确定您将要做的任何事情都不能通过已经可用的东西来完成?好吧,如果您确定,请继续阅读。
首先,您想要做的最困难的部分是管理您的用户访问。我建议您先编写用户管理模块,然后再继续。
对于您想要的,Drupal 或其他高级 CMS 系统似乎是引导系统的好方法。Drupal 将立即处理您的用户管理(或问题最少),您可以将其余代码编写为静态节点。这也使得添加博客、论坛、新闻和管理邮件列表等变得容易。
如上面评论中所述,您确实需要将数据保存在一起。最好保留数据以进行历史比较。
如果不扩展 CMS,在您从精神科医生那里回来后,您将需要以下内容:
头文件以访问数据库并检查用户身份验证。
页脚文件以显示您的数据
单独的页面文件来呈现或获取您的数据。
处理用户的数据库结构(至少)应该是 IRO:
Person - details of individual users
username - link person to a username
email - email addresses
club - sports club details
password - passwords
logon - record of logon attempts
role - record of role of individuals in your site
permissions - list of required permissions to access areas of the site
role_permissions - default permissions for each role
person_role - link person to role
person_permissions - link person to permissions (only needed if some individuals need extra permissions not given routinely by their role)
club_person; person_email; - link people to clubs and to their email addresses.
要处理比赛,您需要:
team - team name, group and club reference
grouping - list of groups eg by age.
divisions. - list of divisions
venue - list of venues. Include GPS!!!
match - division, grouping, team1, team2, venue, date, time
result - team1 reported result, team 2 reported result, approved result (you may need to intervene!) match.
如您所见,您需要相当多的表格,但您不得尝试与实际团队一起做有趣的事情,直到您的用户访问权限正常工作。
我为你勾勒出的是一个正常形式的数据库。没有文本数据重复,数据易于检索、索引和显示。我确实觉得这个问题对于 SO 来说太宽泛了,因为为您设计数据库有点超出范围,但我确实认为一般格式很有用。
每个表应该只包含唯一的必要数据,例如:
Person: personid int, surname, forename, style, whenadded, whoadded, inuse
email: emailid, email, whenadded, whoadded, inuse
email_person: emailpersonid,emailid,personid, whenadded,whoadded,inuse
这允许多人共享一封电子邮件,并将多封电子邮件应用于一个人而没有文本重复。ID 应该是 INT AUTO_INCREMENT PRIMARY KEY 而不是 SERIAL 类型,因为这样可以节省大量存储空间,并且您永远不会在此应用程序中填写 INT。
其他表应以相同方式创建。whoadd 和 when added 列是可选的,非常需要存储空间,但非常有用。inuse 是必不可少的,将其设置为 BOOL,您可以在不删除团队的情况下删除团队 - 数据不会丢失。whenremoved 和 whoremoved 对于审计也很有用。
关于密码的一句话 - 请确保将这些存储为 SALTED HASH。如果你这样做,当你的网站被黑客入侵时,没有人会暴露他们也用于网上银行的密码。人们往往是白痴。你必须照顾他们。
正如我所说,有点超出范围,所以我将在那里结束答案 - 它根据要求为您提供了第四范式 Db 的基本轮廓,它将是健壮和可扩展的,但让您完成工作。如果问题太难了,为什么不问更多问题。
祝你好运。
添加:
DIY框架:
如果您不想学习使用现有框架或 CMS 之一,则需要自己编写。奇怪的是,这实际上非常容易。
header.php:
<?PHP
$mysqli=new mysqli(credentials....)//connect to database and present a mysqli or pdo object.
session_start(); //open a session
//you will need to authenticate your session here - see below
?>
页脚.php:
<HTML>
<HEAD>
<TITLE>
<?PHP echo $pagetitle;?>
</TITLE>
</HEAD>
<BODY>
<?PHP echo $content;?>
</BODY>
</HTML>
这些由 mypage.php 使用:
<?PHP
require("header.php");
//do some stuff that generates $content
$pagetitle="mypage.php";
require("footer.php:);
?>
应该强调的是,这是您将需要的最低限度并且确实很糟糕 - 它只是为了展示应该如何开始,而不是理想代码的示例。不过它会起作用。
关键是创建一个显示您需要的变量的标题,例如数据库连接、用户名、用户登录状态等,以及一个您可以输入详细信息以显示数据的页脚。页脚是您结合 HTML 和 PHP 的唯一地方。
使用您的 $_SESSION 存储需要在页面之间保留的信息。
这些文件可以像您喜欢的那样简单或复杂 - 我在很久以前创建了自己的文件,它对用户和会话进行了多次检查,并且可以在页脚中显示脚本、自定义 CSS 文件等。如果您从简单开始并根据需要进行构建,这并不难。SO将在这里为您提供帮助。
提醒一句:虽然你可以开始很简单,但你想做的事有腿,会失控。请在您的代码启动并运行后对其进行审核,以确保您没有无意中包含安全漏洞。当您进入项目并需要快速修复时,很容易将它们包含在内,除非您正在寻找它们,否则以后很难发现它们。