Вход и сеанс PHP

У меня возникли проблемы с проверкой сеанса, чтобы получить доступ к странице, на которой мне нужно иметь активный сеанс.

Процесс входа в систему:

//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 и будет удалено в будущем. Вместо этого следует использовать расширение MySQLi или PDO_MySQL . Переход на PreparedStatements еще лучше предотвращает атаки SQL Injection!