登录系统与会话和mysqli做了一些错误


log in system with sessions and mysqli done something wrong

大家好,我正试图为学校项目做一个简单的登录系统,当我没有实现数据库时,我得到了它的工作。但正如你现在看到的,我试图实现数据库它工作得不太好,因为我不能使PHP标记在echo的开始和结束,无论如何,谁可以帮助我?正如我所说,当我只是写一个随机的用户名和密码,没有任何数据库的东西。

  <?php
    session_start();
    include('../inc/dbconnection_inc.php');
    $result=mysqli_query($dbconnection, 'SELECT * FROM users');
    $row=mysqli_fetch_array($result);
    $p=$_POST['password'];
    $u=$_POST['username'];
    if ($u==echo $row["username"] AND $p==echo $row["password"]);
    {
        $_SESSION['username'] = echo $row["username"];
        header("Location: admin.php");
    }
    else
    {
        header("Location: ../index.php");
    }

我不确定那里是否需要echo。根据使用手册,echo不返回任何值。

尝试从代码中删除所有的echo,如

...
if ($u === $row["username"] && $p === $row["password"])
{
    $_SESSION['username'] = $row["username"];
    header("Location: admin.php");
}

(我通常用&&代替AND,这也可能是原因)

除此之外,你的代码将检查仅第一次获取行(我想你知道吗?)

$p=$_POST['password'];
$u=$_POST['username'];
$query = 'SELECT * FROM users WHERE username = ?';
if($result=mysqli_query($dbconnection, $query)){
    mysqli_stmt_bind_param($result, "s", $u);
    mysqli_stmt_execute($result);
    $row=mysqli_fetch_array($result);
if ($u == $row["username"] && $p == $row["password"]);
{
    $_SESSION['username'] = echo $row["username"];
    header("Location: admin.php");
}
else
{
    header("Location: ../index.php");
}
}else{
    //fail
}

  • 删除回声
  • 通过添加Where类来选择特定用户
  • 准备你的声明