0

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

注意:未定义变量:C:\wamp\www\pages\basicForm.php 中的姓氏在第 27 行调用堆栈#TimeMemoryFunctionLocation 10.0007366504{main}()..\basicForm.php:0 "NAME="surname">

为什么?

和代码:

<!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>
4

4 回答 4

0

您需要分配的初始值如下

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

在将一个文件包含到另一个使用相同变量名的文件中的情况下,依赖未初始化变量的默认值是有问题的。开启 register_globals 也是一个主要的安全风险。在使用未初始化变量的情况下会发出 E_NOTICE 级别错误,但在将元素附加到未初始化数组的情况下则不会。isset() 语言结构可用于检测变量是否已经初始化。

详细阅读:PHP:“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”

于 2012-12-27T18:08:05.393 回答
0

$surname一开始没有设置:

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

$_POST如果不为空,它只会设置在顶部。

于 2012-12-27T18:09:35.177 回答
0

如果$_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'] : '';

两者都将确保您的变量在打印之前创建。

于 2012-12-27T18:11:10.040 回答
0

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

看来你误解了你的教程。
在您实际向服务器发送内容之前,服务器端技术无济于事。
因此,您似乎只是在提交之前输入您的值并刷新您的页面。虽然有些浏览器可能会根据自己的意愿保留输入的值,但服务器端 PHP 与它无关。

Another story if you populate your form with values that's already on the server - such filled form will persists even refreshes.

于 2012-12-27T18:16:44.167 回答