0

我现在对我的 php mysql 登录问题感到很困惑。这是我的代码。

请不要建议我现在使用 mysqli 和 PDO,因为我是新手,目前只知道如何在 php 中使用 mysql 函数。我稍后会解决这个问题。所以请看一下代码并告诉我验证码有什么问题。

登录.php

<?php
session_start();
if($_SERVER["REQUEST_METHOD"] == "POST") {
    $username=addslashes($_POST['username']);
    $password=addslashes($_POST['password']);

    //connect to database
    $con=mysql_connect("localhost","","") or die();
    $db=mysql_select_db("dashboard") or die();

    //execute query
    $query ="SELECT username, password from `login` where username=$username";
    $result=mysql_query($query);

    if($username=='username' && $password=='password') {
        $_SESSION['username']=$username;
        header("Location:dashboard.php");
    } else {
        echo "You got credentials wrong";
    }
}
?>

<form method="post" action="<?php htmlspecialchars("PHP_SELF"); ?>">

<label>Username :</label><input type="text" name="username"></br>
<label>Password:</label><input type="password" name="password"></br>
<br/>
<input type="submit" value="submit"></br>
</form>

仪表板.php

<?php
session_start();
echo "Welcome ". $_SESSION['username'];
?>
<a href="logout.php">Logout</a>

注销.php

<?php
session_destroy();
header("Location:login.php");
?>

页面上的错误是:

注意:未定义索引:第 23 行 /home/lampstack/apache2/htdocs/dashboard/login.php 中的密码

第 23 行代码

if($username=='username' && $password=='password')
4

1 回答 1

0

在您查询的第一阶段

$query ="SELECT username, password from `login` where username=$username";

你应该用引号括起你的用户名变量,因为我认为这不是一个整数字段

$query ="SELECT username, password from `login` where username='$username'";

然后您的if语句中有错误,并且您没有从查询中获取任何结果,因此您应该检查获取的行或mysql_num_row大于 0

$result=mysql_query($query);

if($row = mysql_fecth_array($result))
{
    $_SESSION['username']=$username;
    header("Location:dashboard.php")
}

我会指出您的代码很容易受到 mysql 注入的影响

于 2013-05-27T18:06:42.267 回答