我有一个简单的表单,其中包含名称和消息字段。当用户提交表单时,页面显示用户输入的用户ID号,并在提交时创建文件“data.db”,如果服务器中不存在该文件。每次存储新提交时,用户ID号将从1开始并递增1。
该文件具有以下格式:
1|{name1}|{gender1}|{email1}|{phone1}
2|{name2}|{gender2}|{email2}|{phone2} ...
但是,我在显示用户编号时遇到问题,每次提交表单时它都只保持1。
我创建的变量$ userid似乎根本没有递增......
这是用于在表单提交后显示数据的php代码...
<?php
include("email.php");
$userid += 1;
echo "<b><u>Your submission has been added!</u></b> <br />";
echo "User ID: " . $userid . "<br /><br />";
echo "Name = ";
echo $_POST["name"];
echo "<br /> Gender = ";
echo $_POST["gender"];
echo "<br /> E-Mail = ";
echo $_POST["email"];
echo "<br /> Phone No. = ";
echo $_POST["phone"];
echo "<br />";
echo "<p>Thank You</p>";
$entry = $userid . "|" . $_POST["name"] . "|" . $_POST["gender"] . "|" . $_POST["email"] . "|" . $_POST["phone"] . "\n";
file_put_contents("data.db", $entry, FILE_APPEND|LOCK_EX);
echo "Confirm email sent!";
?>
答案 0 :(得分:3)
$ userid的值不会保留在页面的不同负载上。您可以将它存储在$ _SESSION全局中以访问它,但这只有在(a)您正在使用会话时才会起作用,并且(b)它是同一会话中同一终端上的同一用户。
我认为你想要的是当任何用户查看页面时要使用(并递增)的值。因此,您需要将值存储在文件或SQL数据库中。在页面加载时查找,增加它,将其写回磁盘。但是你有同时访问的问题 - 如果两个用户同时打开页面会怎么样 - 你可能无法获得一个唯一的[递增]数字。
我建议使用某种SQL后端,让它自动生成一个唯一的ID以便在输出中使用,从而保证每次都有一个唯一的用户ID。
答案 1 :(得分:1)
正如我在评论中所写,您的脚本无法知道它的调用频率。所以你必须永久存储用户ID。
你可以使用它(警告:我没有处理文件处理,例如,当在同一时间提交2个表格时):
<?php
include("email.php");
include('counter.php');
$userid += 1;
file_put_contents('counter.php', '<?php $userid = '.$userid.';');
echo "<b><u>Your submission has been added!</u></b> <br />";
echo "User ID: " . $userid . "<br /><br />";
echo "Name = ";
echo $_POST["name"];
echo "<br /> Gender = ";
echo $_POST["gender"];
echo "<br /> E-Mail = ";
echo $_POST["email"];
echo "<br /> Phone No. = ";
echo $_POST["phone"];
echo "<br />";
echo "<p>Thank You</p>";
$entry = $userid . "|" . $_POST["name"] . "|" . $_POST["gender"] . "|" . $_POST["email"] . "|" . $_POST["phone"] . "\n";
file_put_contents("data.db", $entry, FILE_APPEND|LOCK_EX);
echo "Confirm email sent!";
?>