这是我正在处理的代码(它是本教程的一部分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;?>
在这里输入代码我没有得到未定义的变量。
答案 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" />