注意:未定义的变量:基本的html表单

时间:2012-05-12 08:33:15

标签: php html

这是我正在处理的代码(它是本教程的一部分http://www.homeandlearn.co.uk/php/php4p9.html

这很好用

`          基本HTML表单

<?PHP

if (isset($_POST['Submit1'])) {
$username=$_POST['username'];
if($username=="ken"){
    print("you the man");
    }
    else {
        print("you are not supposed to be here");
        }
    }
    else{
        $username="";
        }

?>

</head>
<body>

<FORM NAME ="form1" METHOD ="post" ACTION = "basicForm.php">

username: <INPUT TYPE = "TEXT" VALUE ="<?PHP print $username;?>"NAME="username">

<INPUT TYPE = "Submit" Name = "Submit1" VALUE = "Login">

</FORM>
</body>
</html>`

但这不是

<html>
<head>
<title>A BASIC HTML FORM</title>

<?PHP


if (isset($_POST['Submit1'])) {

$username=$_POST['username'];
$nickname=$_POST['nickname'];
if($username=='ken'and$nickname=='hawk'){
    print("you the man");
    }
    else {
        print("you are not supposed to be here");
        }
    }
    else{
        $username=""and$nickname="";
        }

?>

</head>
<body>

<FORM NAME ="form1" METHOD ="post" ACTION = "testformken.php">

nickname: <input type="text" VALUE ="<?PHP print $nickname;?>" name="nickname" /><br />
username: <input type="text" VALUE ="<?PHP print $username;?>" name="username" />

<INPUT TYPE = "Submit" Name = "Submit1" VALUE = "Login">

</FORM>
</body>
</html>

我收到此通知:未定义的变量:第30行的C:\ wamp \ www \ testformken.php中的昵称调用堆栈#TimeMemoryFunctionLocation 10.1800367256 {main}().. \ testformken.php:0“name =”nickname“ /&GT;

我搞了一些事情,如果我改变了

nickname: <input type="text" VALUE ="<?PHP print $nickname;?>" name="nickname" /><br />
                      to
nickname: <input type="text" VALUE ="<?PHPprint$nickname;?>" name="nickname" /><br />

我没有得到一个unifined变量,但它也没有打印昵称 如果我将值更改为

<?PHP print $username;?> 

在这里输入代码我没有得到未定义的变量。

2 个答案:

答案 0 :(得分:8)

您只需在网站上打印$nickname,但只能在if-block(if (isset($_POST['Submit1'])) {)中定义。

要避免这种情况,请将打印部件更改为:

<?php print isset($nickname) ? $nickname : ''; ?>

请注意,我在这里使用ternary operator(if-else的简写),如果您是初学者,可能对您来说是新的。

为了避免XSS攻击,您还shouldn't output variables without escaping在实际使用中Jack suggested(对于教程,可以保持简单)。

答案 1 :(得分:1)

实际上,当页面首次加载时,它找不到变量“nickname”,因为您已在“if”条件下创建了该变量,并且只能在提交表单时创建该变量。

因此,您必须检查是否创建了变量“nickname”,然后将其值分配给输入。您可以按照以下代码执行此操作:

nickname: <input type="text" VALUE ="<?PHP if(isset($nickname)){ print $nickname; } ?>" name="nickname" />