php - 使用 PDO 登录系统

标签 php mysql pdo

我一直在使用这段代码,但无法找出问题所在。

它可以正常登录,但不会将 ID 传递到 session 中。它与 JQuery 一起使用。

$loginresult = $db->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
$loginresult->bindParam(":username", $username);
$loginresult->bindParam(":password", $encryptedPassword);
$loginresult->execute();
$result = $loginresult->fetch(PDO::FETCH_OBJ);

if($loginresult !== false){
       $_SESSION['loggedin'] = microtime();
       $_SESSION['userid'] = $result->id;
       echo 'true';
}else{
      echo 'false';
}

编辑:新代码

<?php
require('../../config.php');

$username = $_POST['username'];
$password = $_POST['password'];

$encryptedPassword = crypt($password,$salt);

$loginresult = $db->prepare("SELECT * FROM users WHERE username = :username AND password = :password");
$loginresult->bindParam(":username", $username);
$loginresult->bindParam(":password", $encryptedPassword);
$loginresult->execute();
$count = $loginresult->rowCount();
        var_dump($count);
        print_r($db->errorInfo());
if($count){
        $result = $loginresult->fetch(PDO::FETCH_OBJ);
        var_dump($result);
        print_r($db->errorInfo());
        session_start();
       $_SESSION['loggedin'] = microtime();
       $_SESSION['userid'] = $result->id;
       echo $result->id;
       //echo 'true';
}else{
      echo 'false';
}
?>

最佳答案

您可能想要:

if($loginresult){

而不是:

if($loginresult !== true){

请注意,fetch 仅在失败时返回 false

当然,在将任何输出发送到浏览器之前,您需要 session_start();

关于php - 使用 PDO 登录系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17713757/

相关文章:

PHP 长轮询 - "long"应该有多长?

mysql - SQL - 获取每个匹配字段的 bool 值

php - 同一个查询涉及两个数据库时如何执行PDO语句?

mysql - 设计器表关系与连接

php - 登录函数始终返回 true

php - 优化包含 PDO 查询的 while 循环

javascript - 使用 jQuery 文件上传无法上传文件

javascript - Woocommerce,将产品添加到购物车,请求失败

php - 框架 - 什么是 PHP 框架?

sql - 如何在一个查询中同时获得子集的计数和总集的计数?