为什么书中的演示代码会出错?#34;未定义的索引"

时间:2014-12-12 04:25:14

标签: php sql forms

我在学习php。我正在阅读的书是“PHP和mysql web开发”。

对于Page394上的代码,它有如下错误: enter image description here 你能告诉我什么是错的吗?

代码如下:

<?php
    $name = $_POST['name'];
    $password = $_POST['password'];

    if ((!isset($name)) || (!isset($password)))
    {
?>
<h1>Please log in<h1>
<p> This page is secret.</p>
<form method="post" action="secret.php">
<p>Username: <input type="text" name="name"></p>
<p>Password: <input type="password" name="password"></p>
<p><input type="submit" name="submit" value="Log in"></p>
</form>
<?php
}
else if (($name == "user") && ($password =="pass"))
{
    echo "<h1>Here it is</h1>";
    echo "<p>I bet you are glad you can see this secret page.</p>";
}
else{
    echo "<h1> Go Away</h1>";
    echo "<p>You are not authorized to use this </p>";
}

3 个答案:

答案 0 :(得分:2)

  

你能告诉我出了什么问题吗?

你不够专心。你的书在行的开头有附加符号。

@    $name = $_POST['name'];
@    $password = $_POST['password'];

@ - 抑制错误。

我的建议:

请勿使用本书。它古老而丑陋。

答案 1 :(得分:1)

您应该测试$_POST值,然后分配。你做的是反过来。

应该是这样的:

if(isset($_POST['name'], $_POST['password'])) {
    $name = $_POST['name'];
    $password = $_POST['password'];

    // rest of code
}

答案 2 :(得分:1)

如果您要提交表单所在的同一页面,那么您应该这样做:

    $name = isset($_POST['name']) ? $_POST['name'] : "";
    $password = isset($_POST['password']) ? $_POST['password'] : "";

本机函数isset检查变量是否存在。