在PHP中重新加载页面时保持表单输入字段值

时间:2012-12-02 13:34:45

标签: php forms session

我有一个带有表单的网页。

当de _POST方法被激活时,我使用这个php代码将表单的值放在会话中:

<?php session_start(); ?>
<?php
$dump ='';
$dump .='<!DOCTYPE html>
<html>
<head></head>
    <body>';


$dump .='   
    <h1>Deel 1: registratiegegevens</h1>
<form action="oplossing21-deel2.php" method="post">

<ul>
        <li>            <label for="email">email: </label><input type="text" name="email" id="email" value="'.$email.'" />
        </li>
                    <br />
        <li>            <label for="nickname">nickname: </label><input type="text" name="nickname" id="nickname" />
        </li>
                    <br />
        <li>            <input type="submit" value ="volgende" />
        </li>


</ul>
                </form>

';  




if ($_POST) {
  // Store our name in the session array
  $_SESSION["email"] = $_POST["email"];
  $_SESSION["nickname"] = $_POST["nickname"];
}

$email = isset($_SESSION["email"]) ? $_SESSION["email"] : "leeg";




    $dump .='   

    </body>
</html>';
echo $dump;

?>    

现在我想知道如何确保如果我重新加载页面(F5或cmd + r),那么字段将填入最后输入的值。所以我提交表单,然后我转到下一页,但是当我回来时,我希望输入字段用最后的已知值填充。有人可以帮我弄这个吗?我已经尝试用isset() - 函数做一些事情,但我不知道从这里去哪里。

在第二页上,我只是将会话放在html文件上,并且有效..

<li>'.$_POST["email"].'</li> 

5 个答案:

答案 0 :(得分:1)

更好的方法是在onkeyup事件上使用html5存储,所以即使重新加载它仍然会在本地存储中,但是如果你不能在那个时候只用php那么你需要使用ajax并在一段时间后或onkeyup上进行ajax调用..etc事件

答案 1 :(得分:0)

您可以通过检查是否在页面加载期间设置变量来执行此操作。例如:

PHP
$email = isset($_SESSION["email"]) ? $_SESSION["email"] : "";

并在

HTML
<input type="text" value="<?php echo $email; ?>" />

因此,如果设置了session-variable,它的内容将被插入到字段中 - 如果没有,则插入一个空字符串。

答案 2 :(得分:0)

任何时候你想使用$ _POST,你需要把它放在“form”标签调用的“action”文件中。在将表单数据发送到服务器之前,文档无法存储值。在操作文档“oplossing21-deel2.php”中放置$ _SESSION [“email”] = $ _POST [“email”];和$ _SESSION [“nickname”] = $ _POST [“nickname”];

答案 3 :(得分:0)

在表单方法文件oplossing21-deel2.php中使用<?php session_start(); ?>,然后执行

$_SESSION["email"] = isset($_POST["email"]) ? $_POST["email"] : "";

它会将电子邮件值保存到会话中。

当您返回表单文件时

$email = isset($_SESSION["email"]) ? $_SESSION["email"] : "";

<input type="text" value="<?php echo $email; ?>" />

此外,当您成功使用表单方法文件中的值时,请清除会话$_SESSION["email"]="";,以便在重新加载表单时不会出现旧值。

答案 4 :(得分:0)

在表单提交的页面上执行类似的操作

session_start();
$_SESSION['data'] = $_POST['data'];
$_SESSION['data_another'] = $_POST['data_another'];

并且您可以在任何类似的地方访问这些会话变量

session_start(); // this should be at the top of the page before any html load
<input type="text" name="name" value="<?php echo $_SESSION['data'];?>"/>