繁体   English   中英

在PHP中保存和加载活动日志的最佳方法是什么?

[英]What is the best way to save and load an activity log in PHP?

在我开始之前,这是一个分配。 我只是在帮助之后给了一些指导:)

我正在开发一个健身房会员网站,允许用户注册,登录和预订活动。

除了活动预订系统外,我还有一切工作,这就是我需要的指导。 我有一个txt文件,其中包含每个活动名称,时间,总共可以参加的活动日志。 我想在每个活动的最后添加一个谁正在参加。 因此,允许用户预订活动,将活动用户名添加到活动中。

这正是我目前的activity.txt文件打印方式(除了最右边的'Book'按钮。

NumberOne       3       Wednesday 8am       (BOOK)
NumberTwo       7       Thursday 10am       (BOOK)
NumberThree     20      Monday 1pm          (BOOK)
NumberFour      15      Tuesday 5pm         (BOOK)

基本上,我需要指导的是“书籍”按钮。 按下“预订”按钮后,它会将用户预订到活动中。

这是我的activity.txt文件当前的样子:

NumberOne,3,Wednesday 8am
NumberTwo,7,Thursday 10am
NumberThree,20,Monday 1pm
NumberFour,15,Tuesday 5pm

这是我目前正在打印活动的代码:

function bookActivity()
{
 $fileContentsArray = file("activity.txt");
    echo "<table>";
    foreach($fileContentsArray as $one_persons_data)
{
  echo '<tr>';
  $splitted = preg_split('/,/', $one_persons_data);
  foreach ($splitted as $one) 
  {
    echo "<td>$one</td>";
  }
  echo '</tr>';
}
echo "</table>";
}

如果需要,下面是我的users.txt文件。 所有密码都保存在MD5中

jiten:3fc0a7acf087f549ac2b266baf94b8b1
jb:3fc0a7acf087f549ac2b266baf94b8b1
test:bed128365216c019988915ed3add75fb
joeBlogg:bed128365216c019988915ed3add75fb
userX:bed128365216c019988915ed3add75fb
userY:bed128365216c019988915ed3add75fb

非常感谢所有帮助。 对如何做到这一点非常困惑。

这是一个粗略的指导原则(我不会详细说明,因为它毕竟是家庭作业)我会保留你不允许使用任何不同于文本文件的假设,但可以创建/删除任意数量的文本文件。

  1. 解析活动txt文件,使用file(...)设置正确的标志
  2. 构建一个数组,其中键是活动“ID”(numberOne,numberTwo等),value是包含活动详细信息的另一个数组。 你可能explode()在这里找到方便的explode()
  3. 对于每个活动,创建一个专用于它的文件(如果它当然不存在)。 此文件将包含预订活动的注册用户的名称。 我建议你在这个文件中每行写一个名字。
  4. 有人按“书籍活动”按钮时,您必须执行以下步骤:

    • 检查请求的活动文件是否存在。 如果没有,请创建一个空的。
    • 计算当前预订用户数并将其与允许的最大值进行比较
    • 如果不是,请将新用户添加到文件中,否则拒绝预订
  5. 要显示已预订用户的列表,只需从每个活动文件中读取文件内容即可。 这次你可能会发现有用的implode()

我希望这能帮助您找到正确的方法。 最后一点,文本文件并不是为了实现这一目的而设计的:一个小型数据库更易于使用,学习起来更有趣,对您的未来更有用。

参考文献:

一些东西:

  1. 这听起来不像是日志; 它听起来像一个基于文件的数据库。
  2. 如果允许,请使用.csv文件(而不是.txt)并使用fgetcsv()解析它。
  3. 由于它是您的数据库,您需要写入它。 你可以使用fputcsv()

(FWIW,你的.txt文件已经是csv,你只是不这样对待它。)

根据具体问题:单击“预订”只需将课程名称传递给将当前用户添加到该课程的脚本(如果他们尚未注册)。 您可以使用POST(HTML表单)或更简单地GET(链接和查询参数)传递课程名称。

使用链接(GET)可能如下所示:

    $bookingUrl = "register.php?courseName=".urlencode($courseName);

使用表单(POST)可能如下所示:

    <form action="register.php" method="POST">
        <input type="hidden" value="<?= $courseName; ?>" />
        <input type="submit" value="Book" />
    </form>

另一个答案提到使用单独的文件来跟踪每门课程的注册情况,但我不认为这是必要的; 只需使用一个。 想一想你真正追踪的内容是有帮助的:

  1. 可用课程,“courses.txt”:课程名称,课程时间(得到它)
  2. 用户,“users.txt”:用户名,密码(得到它)
  3. 注册,“registrations.txt”:用户名,课程名称(没有得到)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM