簡體   English   中英

僅登錄第一個用戶錯誤

[英]Login only first user error

Iam使用php 5.5和pdo創建登錄代碼。 該代碼運行正常,但唯一的第一個用戶已登錄,我不知道為什么? 例如,我的數據庫表中有5個用戶。 當我登錄第一個時,它將進入已登錄狀態,但是當我嘗試登錄第二個或第三個時,它將顯示一條錯誤消息,該錯誤消息是我在錯誤的數據登錄上設置的。 以下是我的登錄代碼...

<?php
session_start();
include 'conn.php';
try
{
    $user = $_POST['user'];
    $pass = $_POST['pass'];
    $remember=$_POST['remember'];
        $smt=$conn->prepare("SELECT * FROM signup");
        $smt->execute();
        $result=$smt->fetch(PDO::FETCH_OBJ);
        $prev=$result->Password;
    $usr=$result->Username;

        if(password_verify($pass,$prev)& $user===$usr)
        {
        // Set username session variable
        $_SESSION['user'] = $user;
        // Jump to secured page
        header('location:index.php');
    }


    else
    {

        header('location:signin.php');
        $_SESSION['login']="Incorrect username or password";
    }

    if($remember)
    {
        setcookie('remember-me',$user,time()+3600000);
        setcookie('remember-pass',$pass,time()+3600000);
        header('location:index.php');

    }
    else
    {
        setcookie('remember-me',$user,false);
        setcookie('remember-pass',$pass,false);


    }

}
catch(PDOException $e)
{
    throw new PDOException($e);
}

?>

提前致謝...

您缺少WHERE CLAUSE

SELECT * FROM signup WHERE Username = :user

將您的代碼調整為以下內容:

$smt=$conn->prepare("SELECT * FROM signup WHERE Username =:user");
$smt->execute(array(':user'=>$user));

請使用以下代碼更新您的代碼

<?php
session_start();
include 'conn.php';
try
{
    $user = $_POST['user'];
    $pass = $_POST['pass'];
    $remember=$_POST['remember'];
        $smt=$conn->prepare("SELECT * FROM signup WHERE username = '".$user."' AND password = '".$pass."' ");
        $smt->execute();
        $result=$smt->fetch(PDO::FETCH_OBJ);
        $prev=$result->Password;
    $usr=$result->Username;

        if(password_verify($pass,$prev)& $user===$usr)
        {
        // Set username session variable
        $_SESSION['user'] = $user;
        // Jump to secured page
        header('location:index.php');
    }


    else
    {

        header('location:signin.php');
        $_SESSION['login']="Incorrect username or password";
    }

    if($remember)
    {
        setcookie('remember-me',$user,time()+3600000);
        setcookie('remember-pass',$pass,time()+3600000);
        header('location:index.php');

    }
    else
    {
        setcookie('remember-me',$user,false);
        setcookie('remember-pass',$pass,false);


    }

}
catch(PDOException $e)
{
    throw new PDOException($e);
}

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM