0

我对 PHP 很陌生,正在尝试构建一个登录系统。我知道它确实不安全,但它只是一个了解 PHP 基础知识的大学项目,所以现在这不是问题。

我的用户名和密码在一个表中,如果用户输入正确的用户名和密码组合,我会尝试存储一个 cookie。我想要只有在用户登录时才能访问的页面。

我不断收到未定义索引通知。我从这篇文章http://notesofgenius.com/how-fix-php-notice-undefined-index/知道我需要在某处添加 isset,但我无法确定将它放在我的代码中的哪个位置。将 isset 与 mysql_real_escape_string 一起使用让我感到困惑。

我已经连接到数据库并在 config.php 中启动了会话。这是代码:

<?php

require("config.php");
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);   
$result = mysqli_query($con,"SELECT * FROM users
WHERE username='$username' AND password='$password'
"
    );
if($row = mysqli_fetch_array($result))
{
$_SESSION['user'] = 'Person';
header('Location: postarticle.php');
}
else{
echo "<p>Incorrect password</p>";
}
?>

谢谢。抱歉,如果以前有人问过这个问题,我确实检查过但找不到任何东西。

4

2 回答 2

2

您可以使用以下代码:

require("config.php");
if(isset($_POST['username']) && isset($_POST['password'])){
  // your other code in here
}

isset()检查变量是否已设置且不为空。您现在遇到的错误可能是因为当usernameorpassword输入为空时正在提交登录表单。

另外,如果你想使用,$_SESSION那么你应该session_start();$_SESSION['user'] = 'Person';.

于 2013-05-21T11:50:21.373 回答
0

其实isset()跟逃跑没什么关系。这两个设施之间没有联系。

此外,如果没有,isset() 不会使您的代码正常工作。如果您以常规方式调用此页面,它可以为您保存一条错误消息,而无需向其发送表单。但是,如果您在发送表单时不断收到此消息 - 请检查表单method和输入name属性。

无论如何,你实际上并不需要isset()这里

<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    require("config.php");
    $username = mysqli_real_escape_string($con, $_POST['username']);
    $password = mysqli_real_escape_string($con, $_POST['password']);   
    $sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
    $result = mysqli_query($con,$sql);
    if($row = mysqli_fetch_array($result))
    {
        $_SESSION['user'] = 'Person';
        header('Location: postarticle.php');
        exit;

    } else {

        echo "<p>Incorrect password</p>";
        exit;
    }
}
于 2013-05-21T11:54:34.943 回答