-2

这是我正在编写的代码(它是本教程的一部分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>

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

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

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

我没有得到未定义的变量,但如果我将值更改为,它也不会打印昵称

<?PHP print $username;?> 

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

4

2 回答 2

7

您只是总是$nickname在您的站点上打印,但您只在输入 if-block ( if (isset($_POST['Submit1'])) {) 时定义它。

为避免这种情况,请将您的打印部分更改为:

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

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

为了避免 XSS 攻击,您也不应该像Jack 建议的那样在不逃避现实使用中的情况下输出变量(对于教程,可以保持简单)。

于 2012-05-12T08:37:34.430 回答
1

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

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

nickname: <input type="text" VALUE ="<?PHP if(isset($nickname)){ print $nickname; } ?>" name="nickname" />
于 2012-05-12T08:45:55.407 回答