如果我以管理员身份而不是普通用户身份登录,我的php登录系统就可以工作

如果我以管理员身份而不是普通用户身份登录,我的php登录系统就可以工作,php,login,Php,Login,我正在做一个类项目的网站,如果我作为一个管理员用户登录它的工作,但如果我作为一个普通用户登录,它不会登录我,但它保持cookies 以下是登录php代码: ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); if(isset($_POST['username'])){ require "config.php"; $usuario = mysqli_real_esc

我正在做一个类项目的网站,如果我作为一个管理员用户登录它的工作,但如果我作为一个普通用户登录,它不会登录我,但它保持cookies

以下是登录php代码:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

if(isset($_POST['username'])){
require "config.php";
$usuario = mysqli_real_escape_string($con,$_POST['username']);
$contra =  mysqli_real_escape_string($con, $_POST['password']);
$consulta = $con->prepare("SELECT cod_usuario, Contra, id FROM Usuario WHERE cod_usuario = ?");
$consulta->bind_param("s",$usuario);
$consulta->execute();
$consulta->bind_result($username, $password, $id);
$consulta->store_result();

if($consulta->num_rows == 1){
    if($consulta->fetch()){
        if(password_verify($contra, $password)){
            session_start();
            session_name('login');
            if($usuario == 'aleaallee' || $usuario == 'administrator'){
                setcookie('loggeduser', $usuario, time() + (86400 * 30), '/');
                setcookie('token', $id, time() + (86400 * 30), '/');
                setcookie('admin', true, time() + (86400 * 30), '/');
                $_SESSION["username"] = $usuario;
                $consulta->close();
                header('location: index.php');
            }else{
                setcookie('loggeduser', $usuario, time() + (86400 * 30), '/');
                setcookie('token', $id, time() + (86400 * 30), '/');
                $_SESSION["username"] = $usuario;
                $consulta->close();
                header('location: index.php');
            }
        }else{
            echo "<h1>Password doesn't match</h1>";
            $consulta->close();
            header('location: index.php');
        }
    }
}

}

您不应该将mysqli_real_escape_字符串与准备好的语句组合在一起,因为它们已经在bind_参数中进行了转义。对于代码的其余部分,可以尝试添加一些回音,以了解在每个登录测试中代码的哪个部分到达。

您不能同时使用、
mysqli\u real\u escape\u string
和参数绑定。这会引起问题。对不起,这不是问题的答案。这也许应该是一个评论。我知道,但我没有必要的声誉去做这件事。
function register($name, $lastname, $user, $pass, $repeated_password, $mail, $birthdate, $location, $address){
require "config.php";
$con = mysqli_connect($server, $username, $password, $dbname);
if($pass == $repeated_password){
    $cryptpassword = password_hash(trim($password), PASSWORD_DEFAULT);
    $id = bin2hex(random_bytes(8));
    $consulta = "INSERT INTO Usuario VALUES('$user', '$name', '$lastname', '$cryptpassword', '$mail', '$address', '$birthdate', '$location', '$id');";
    mysqli_query($con, $consulta);
    mysqli_close($con);
}