我正在测试一个非常基本的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>
发现了一些事情:
- 在输出任何内容之前,我会把session_start((放在页面顶部。
- 您的方法编写不正确,在指定方法时需要"=" - 这是没有存储任何内容,表单未正确提交的主要原因。
- 与您在名称输入上输入值的方式相同 - 它没有"="并且您没有正确关闭输入标签 - 我将其留空并添加了一个占位符 - 您可以将其更改为您需要的。
以下是我的做法:
<?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((; 重置存储的会话。
干杯