登录和会话PHP

登录和会话PHP,php,sql,session,login,system,Php,Sql,Session,Login,System,我在检查会话时遇到一些问题,要访问页面,我需要激活会话 登录过程: //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

我在检查会话时遇到一些问题,要访问页面,我需要激活会话

登录过程:
    //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\u error()

$result=mysql_query($qry) or die(mysql_error());
要知道确切的原因



这个(
mysql.*
)扩展从
php5.5.0
开始就被弃用,将来将被删除。相反,应该使用
MySQLi
PDO_-MySQL
扩展。切换到
PreparedStatements
更能抵御SQL注入攻击

永远不要将密码以明文形式存储在您的表中,或者存储密码的任何位置。改为使用散列函数。@B4NZ41谢谢你的提示,我现在就应用了它!查询看起来不错,但问题在于->如果(mysql_num_rows($result)>0)-打印用mysql_num_rows($result)返回的值-记住TRUE或FALSE是布尔值而不是INT。@B4NZ41我能做些什么来解决这个问题?所以基本上我必须将这个值留给
1
TRUE
?@Gumbo,你需要回答lol.Tsukki..你是否添加了代码中所示的
mysql_error()
,并进行了尝试?@Tsukki
false
仅在失败时返回。@ShankarDamodaran是的,我添加了,但仍然无法工作。授权页面没有问题吗?