php - 登录和 session PHP

标签 php sql session authentication system

我在检查 session 、访问页面时遇到一些问题,我需要激活 session 。

登录流程:

    //Connect to mysql server
    require "reservation/connect.php";

    //Function to sanitize values received from the form. Prevents SQL injection
    function clean($str) {
        $str = @trim($str);
        if(get_magic_quotes_gpc()) {
            $str = stripslashes($str);
        }
        return mysql_real_escape_string($str);
    }

    //Sanitize the POST values
    $login = clean($_POST['user']);
    $password = clean($_POST['password']);

    //Create query
    $qry="SELECT * FROM user WHERE username='$login' AND password='$password'";
    $result=mysql_query($qry);
    //Check whether the query was successful or not
    if($result) {
        if(mysql_num_rows($result) > 0) {
            //Login Successful
            session_regenerate_id();
            $member = mysql_fetch_assoc($result);
            $_SESSION['SESS_MEMBER_ID'] = $member['user_id'];
            $_SESSION['SESS_FIRST_NAME'] = $member['position'];
            session_write_close();
            //if ($level="admin"){
            header("location: admin/dashboard.php");
            exit();
        }else {
            //Login failed
            header("location: index.php");
            exit();
        }
    }else {
        die("Query failed");
    }
?>

身份验证:

if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '')) {
        header("location: index.php");
        exit();
    } 
?>

即使我从表单登录,页面也不会加载并将我重定向回索引!我做错了什么?我把“require_once('../auth.php');”在页面上,但它仍然无法正常工作。

最佳答案

这是因为它进入了语句的 else 部分,这意味着 $result 为 0 或 false。

所以原因是查询一定失败了..所以像这样添加mysql_error()..

$result=mysql_query($qry) or die(mysql_error());

要知道确切的原因..


此(mysql_*) 扩展自 PHP 5.5.0 起已弃用,并将在将来删除。相反,应使用 MySQLiPDO_MySQL 扩展。切换到 PreparedStatements 可以更好地抵御 SQL 注入(inject)攻击!

关于php - 登录和 session PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22581073/

相关文章:

php - ajaxCRUD : two questions about insert

SQL(简单)逐行连接两个表

php - Symfony session 数组在 Controller 中工作正常但在 Twig 中不工作

MySQL 错误代码 1242

sql - 将带有 Access 前端的 CSV 文件导入 SQL Server

php - 如何实现隐式注销?

python - django session 检查是否存在

php - 复制数组并将键保留为空值的最佳方法是什么

php - 使用 PHP 连接到 MySql 数据库时,根据用户输入修改数据库配置是一个坏主意吗?

PHP通知: Undefined offset: 36