Итак, я создал систему входа в систему, она инициирует сеанс, проверяет правильность пароля и задает переменные сеанса.Ошибка PHP в проверке переменной SESSION
Вот несколько вещей, которые вы могли бы хотеть отметить:
- Он успешно входит в
- Там нет никаких проблем с подключением тузд
- Все файлы находятся места правильно в папках
- Там нет предупреждений или сообщений об ошибках
- Структура таблицы MYSQL верна и нет ошибок в базе данных
Примечание: все функции, которые я собираюсь определить в том же файле «functions.php»
За здесь у нас есть функция сессии
include_once("global_config.php");
include_once("db_connect.php");
function sec_session_start()
{
$session_name = 'sec_session_id';
$secure = SECURE;
$httponly = true;
if(ini_set('session.use_only_cookies', 1) === FALSE)
{
echo "Could not initiate a secure session";
exit;
}
$cookieparams = session_get_cookie_params();
session_set_cookie_params($cookieparams['lifetime'],$cookieparams['path'],$cookieparams['domain'],$secure,$httponly);
session_name($session_name);
session_start();
session_regenerate_id();
}
Файл global_config определить пароль MySQL, базы данных , пользователь и хост, а файл db_connect просто возвращают mysqli_connect для подключения к базе данных.
И это здесь функция Логин метод
function login($user,$pass){
sec_session_start();
$link=linkit();
if(empty($user) || empty($pass) || !isset($user) || !isset($pass)){
echo "Error Code: 313, Please contact network administrator for more information";
exit;
}else{
$usercheck = "SELECT `id`,`username`,`password`,`salt` FROM `".LOGINTABLE."` WHERE `username`=? LIMIT 1";
if($stmt=$link->prepare($usercheck)){
$stmt->bind_param('s',$user);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($id,$username,$realpassword,$salt);
$stmt->fetch();
$stmt->close();
if(empty($realpassword)){
echo 'Unrecognized Username, Please enter a valid username';
exit;
}else{
if($realpassword===$pass){
$_SESSION['username'] = $user;
$_SESSION['user_id'] = $id;
$_SESSION['login_string'] = hash('sha512',$pass);
return true;
}else{
echo "Invalid Password!";
exit;
}
}
}
}
}
linkit(), которая определена в db_connect.php, которая возвращает mysqli_connect. Также обратите внимание, что скрипт успешно делает его для установки переменной Session, что означает, что он возвращает true.
ТЕПЕРЬ ПРОБЛЕМА это, когда я проверяю для авторизован
function check_login()
{
if(isset($_SESSION['user_id']) &&
isset($_SESSION['login_string']) && isset($_SESSION['username']))
{
$user_id = $_SESSION['user_id'];
$username = $_SESSIOOO['username'];
$login_string = $_SESSION['login_string'];
$pwd_check = "SELECT `password` FROM `".LOGINTABLE."` WHERE `user_id`=? LIMIT 1";
if($stmt = linkit()->prepare($pwd_check))
{
$stmt->bind_param('s',$user_id);
$stmt->execute();
$stmt->bind_result($realpassword);
$stmt->fetch();
$stmt->close();
$hashedpass = hash('sha512',$realpassword);
if($login_string==$hashedpass){
return true;
}else{
return false;
}
}else{
return true;
}
}else{
return false;
}
}
И, наконец, это где я обрабатываю мой сценарий входа. Также обратите внимание, что ошибок в методах POST и других событий нет. Все работают нормально.
Это в отдельном файле PHP и НЕ в functions.php
<?php
include_once '../includes/functions.php';
if(empty($_POST['loginuser']) || !isset($_POST['loginuser']) || !isset($_POST['id']) || empty($_POST['id']) || !isset($_POST['password']) || empty($_POST['password']))
{
echo "Error Code: 412, Please contact network administrator for more information";
exit;
}else{
if($_POST['loginuser']==="true")
{
$user = $_POST['id'];
$pass = $_POST['password'];
if(login($user,$pass)==true)
{
echo "Logged In!";
}else
{
echo "Failed to login, check your username or password";
}
}
}
?>
Дополнительная информация:
- Ответ я получаю это "Записан В"
- Сессия успешно крепирована
ПРОБЛЕМА: Когда я проверяю статус входа в систему, он возвращает false, несмотря на наличие заданных переменных сеанса.
ПРИМЕЧАНИЕ: check_login() всегда возвращает FALSE. ЭТО ПРОБЛЕМА – DaBaws
Пожалуйста, уточните **, в чем проблема **.Вы бросили много кода с первым упоминанием о том, почему вы все это сбрасываете. – deceze
Когда я проверяю статус входа в систему, он возвращает false, несмотря на наличие заданных переменных сеанса. – DaBaws