在 HTML 中保存一个变量,这样用户只需输入一次信息

Saving a variable in HTML so that the user only has to enter the information one time

因此,如果我在我网站的登录页面上,我会在 'Name' 和 'MNo' 字段中键入 "Joe Bob" 和“111”,使用以下代码制作:

<form action="userLogin.php" method="post">
Name: <input type="text" name="name"><br><br>
Member Number: <input type="text" name="MNo"><br><br>
<input type="submit" value = "Sign in!">
</form>

在下一页上,我可以像这样从输入的字段中获取姓名和会员 ID:

$name = $_POST["name"];
$MNo = $_POST["MNo"];

现在在同一页面上,我想要一个按钮,Joe Bob 可以单击该按钮来显示他的用户历史记录:我需要他的 MNo 来搜索 MySQL 数据库,但是当我转到下一页,使用

<form action = "rentalHistory.php" method = "get">
 <input type="submit" value="View my Rental History"> 
</form>

我不再被允许使用

$MNo = $_POST["MNo"];

错误显示 "Notice: Undefined index: MNo",这意味着它没有保存上一页的 MNo 变量:我该怎么做?

如您所见,当我让用户输入他们的会员号码时它起作用了,但我不想每次都必须这样做。

如何让用户一开始就输入会员号,登录后就可以MySQL多页查询了?

在 php 中有多种方法可以让数据跟随用户,我最推荐的方法是使用 session_start() 然后为会话变量赋值。

另一种但我不推荐的方法是让用户通过具有隐藏属性的表单继续到下一页 <input type="hidden name="MNo" value="value">

如果 $_POST 变量在页面加载后不可用,这意味着您发布的表单不包含带有名称的变量,或者您已经完成了 GET 将用户名作为查询字符串传递的请求(如果表单中没有输入隐藏或其他名称,这仍然不起作用)。

首先尝试 $_GET['name'],如果这不起作用,您需要在您的租赁历史查找表中添加一个名为 name 的隐藏输入,并将其值设为之前发布的值$_POST['name'] 值。

如果您需要经常访问用户数据,您也可以将用户数据存储在会话中,确保在适用时销毁会话!

<form action="rentalHistory.php" method="post">
   <input type="hidden" name="MNo" value="$_POST[MNo]">
   <input type="submit" value="View my Rental History">
</form>