使用 php 在会话中存储表单数据



我正在测试一个非常基本的PHP表单,其中表单数据保存在会话中。 稍后,我希望该会话数据是表单的默认值:

<strong>Test Form</strong>
<form action="" method"post">
<input type="text" name="var" value=<?php $name ?>
<input type="submit" name="Submit" value="Submit!" />
</form>
<?php 
// starting the session
session_start();

if (isset($_POST['Submit'])) { 
$_SESSION['var'] = $_POST['var'];
$name = $_SESSION['var'];
}
echo $name;
?> 

因此,例如,如果我输入"MyName",它应该回显"MyName",并且在形式中应该有值"MyName"。实际代码的问题在于它给出了E_NOTICE : type 8 -- Undefined variable: name -- at line 18错误。我认为变量没有被存储,有人可以帮助我吗?

我注意到的第一个错误是这段代码:

<form action="" method"post">

其中方法不包含符号"=",这会导致参数发布丢失。 此外,"session_start (("函数必须放在任何其他代码之前。由此派生的代码如下:

<?php
// starting the session
session_start();
if (isset($_POST['Submit'])) { 
$_SESSION['var'] = $_POST['var'];
$name = $_SESSION['var'];
} else {
$name = null;
}
?>
<strong>Test Form</strong>
<form action="" method="post" enctype="multipart/form-data">
<input type="text" name="var" value="<?= ($name != null) ? $name : ''; ?>">
<input type="submit" name="Submit" value="Submit!" />
</form>

发现了一些事情:

  1. 在输出任何内容之前,我会把session_start((放在页面顶部。
  2. 您的方法编写不正确,在指定方法时需要"=" - 这是没有存储任何内容,表单未正确提交的主要原因。
  3. 与您在名称输入上输入值的方式相同 - 它没有"="并且您没有正确关闭输入标签 - 我将其留空并添加了一个占位符 - 您可以将其更改为您需要的。

以下是我的做法:

<?php session_start(); ?>
<strong>Test Form</strong>
<form action="" method="post">
<input type="text" name="var" value="" placeholder="enter name">
<input type="submit" name="Submit" value="Submit!" />
</form>
<?php
if (isset($_POST['Submit'])) {
$_SESSION['var'] = $_POST['var'];
}
// Store the session in a variable after the submit - otherwise it will be forgotten on refresh
$name = $_SESSION['var'];
// check if session exists
if(isset($name)) {
echo $name;
}
else {
echo 'no name entered...';
}
?>

如果已提交名称等,您可以编辑上述内容以隐藏表单。 使用 session_destroy((; 重置存储的会话。

干杯

最新更新