PHP如何在重新提交表单时停止重写变量

时间:2018-03-07 07:35:09

标签: php html var

我有2个表单,第一个获取数据库表中人员的ID。第二个获取名称和/或地址以更新该ID。刷新页面时,我将失去ID的值。下面是我如何声明并向id发布值。如何在提交下一个表单并刷新页面时阻止重写? (session_start()位于文档的顶部)

 $_SESSION['ID'] = $_POST['id'];
 $id = $_SESSION['ID']; 

表格1:

 <form method="post">
    <p style="margin-top: 70px;">Please type the ID of the person you wish to add to change their data</p>
    <p style="margin-bottom: 0px;">ID</p>
    <input style="color:black" type="text" name="id" placeholder="10001">
    <input style="color:lightblue;background-color: rgb(80,80,80);margin-top: 7px;" type="submit" value="Submit">
</form>

表格2:

 <form method="post">
    <p>New Information for Customer with ID entered above</p>
    <input style='color:black;' type="text" name="newName" placeholder="New Name">
    <input style="color:black;" type="text" name="newAddress" placeholder="New Address">
    <input style="color:lightblue;background-color: rgb(80,80,80);margin-top: 7px;" type="submit" value="Submit">
</form>

1 个答案:

答案 0 :(得分:2)

由于两个表单都缺少action的{​​{1}}属性,我认为两者都在同一页面上。这导致了问题,即您一次只能提交一个表单。 在您提交第二个表单时,form数据将设置为该表单中可用的字段,因此$_POST将被删除。由于您似乎总是调用$_POST['id'],因此您将使用$_SESSION['ID'] = $_POST['id'];重写它,因此会删除该条目。您可以改为检查NULL是否真的已提交:

id

像这样你的会话将保留id。

或者,因为您的第二个表单中没有任何字段,需要从指定用户加载数据,您还可以将输入字段合并到第一个表单。像这样,if (array_key_exists('id', $_POST)) { $_SESSION['ID'] = $_POST['id']; } $id = $_SESSION['ID']; 将始终再次提交并保留,因为它是提交的id的一部分。

form

另外,您应该将给定的值提交给用户,因此表单会保留字段:

<form method="post">
    <p style="margin-top: 70px;">Please type the ID of the person you wish to add to change their data</p>
    <p style="margin-bottom: 0px;">ID</p>
    <input style="color:black" type="text" name="id" placeholder="10001">
    <p>New Information for Customer with ID entered above</p>
    <input style='color:black;' type="text" name="newName" placeholder="New Name">
    <input style="color:black;" type="text" name="newAddress" placeholder="New Address">
    <input style="color:lightblue;background-color: rgb(80,80,80);margin-top: 7px;" type="submit" value="Submit">
</form>