在浏览器刷新后尝试保留PHP表单文本字段中输入的值时出错


Error when trying to retain value entered in PHP form text field after browser refresh

我正在尝试运行一个小PHP脚本。当我尝试运行这个小PHP行时,我得到一个错误:& lt; ?PHP在html代码中打印$firstname; ?>根据我的教程指南,value元素中的这一行应该确保即使在刷新浏览器后,我也能将任何输入文本输入到文本字段中,但事实并非如此!出现以下错误消息:

注意:未定义变量:姓氏在C:'wamp'www'pages'basicForm.php调用Stack #TimeMemoryFunctionLocation 10.0007366504{main}(). 'basicForm.php:0 " NAME="姓">

为什么?

和代码:

<!DOCTYPE html>
<html>
<head>
    <title></title>
        <?PHP
        if (!empty($_POST)) {
            $firstname = $_POST['firstname'];
            $surname = $_POST['surname'];
            print($firstname);
            print($surname);
        }
        else {
        } print( 'welcomes');
    ?>
</head>
<body>
<Form name ="form1" Method ="POST" Action ="basicForm.php">
    <label>

    <INPUT TYPE = 'TEXT' Name ='firstname' VALUE="<?PHP print $firstname ; ?>">
    </label>
    <p>
        <label>
            <INPUT TYPE="TEXT" VALUE="<?PHP print($surname); ?>" NAME="surname">
        </label>
    <p>
        <Input Type = "Submit" Name = "Submit1" Value = "Login">
</FORM>

</body>
</html>

所有你需要分配的初始值如下

$firstname = '';
$surname = '';

依赖于未初始化变量的默认值是将一个文件包含到另一个使用相同的变量名。这也是一个重大的安全风险Register_globals打开。的情况下会发出E_NOTICE级别错误处理未初始化的变量,但在向未初始化的数组添加元素。收取()广告语言构造可用于检测变量是否已经存在初始化。

详细阅读:PHP: "通知:未定义变量", "通知:未定义索引"answers"通知:未定义偏移"

$surname一开始没有设置:

<INPUT TYPE="TEXT" VALUE="<?PHP print($surname);

只有当$_POST不为空时才会在顶部设置。

如果$_POST变量为空,则不会创建$surname。有几种方法可以解决这个问题。

1、预定义变量:

$firstname = '';
$surname = '';
if (!empty($_POST)) {
    $firstname = $_POST['firstname'];
    $surname = $_POST['surname'];
}else {
}
2、使用三元语法:
$firstname = isset($_POST['firstname']) ? $_POST['firstname'] : ''; 
$surname = isset($_POST['surname']) ? $_POST['surname'] : '';

根据我的教程指南,value元素中的这一行应该确保即使在刷新浏览器后,我也可以将任何输入文本输入到文本字段中

你似乎误解了你的教程。
在你真正向服务器发送一些东西之前,服务器端技术无法提供帮助。
所以,看起来你只是在提交之前输入你的值并刷新你的页面。虽然有些浏览器可能会根据自己的意愿保留输入的值,但服务器端PHP与此无关。

另一种情况是,如果使用服务器上已经存在的值填充表单,那么即使刷新,这种填充的表单也会持续存在。