Я только начал использовать сеансы, и у меня были некоторые головные боли, у меня была эта работа вчера вечером, теперь она открылась сегодня ... больше не работает.Переменные сеанса, не переносящие на следующую страницу
В моем процессоре ввода у меня есть следующее, если все в порядке. Этот скрипт отлично работает, я повторил переменные сеанса, чтобы убедиться, что массив работает, и он это делает.
$username - > post from login script
$encrypt_password -> created from password check further up the script
{
$session_name = 'LOGIN'; // Set a custom session name
$secure = false; // Set to true if using https.
$httponly = true; // This stops javascript being able to access the session id.
$cookie_lifetime = '3600';
$cookie_path = '/';
$cookie_domain = '127.0.0.1';
session_set_cookie_params($cookie_lifetime, $cookie_path, $cookie_domain, $secure, $httponly);
session_name($session_name); // Sets the session name to the one set above.
$group = $row['group_type'];
$user_browser = $_SERVER['HTTP_USER_AGENT']; /*grabs browser info*/
$user_id = preg_replace("/[^a-zA-Z0-9_\-]+/", "", $username); /*XSS Protection*/
$group_id = preg_replace("/[^a-zA-Z0-9_\-]+/", "", $group); /*XSS Protection*/
session_start();
$_SESSION['user']=$user_id;
$_SESSION['group_name']=$group_id;
$_SESSION['login_string'] = hash('sha512', $user_browser.$encrypt_password);
session_write_close();
header("location:".$group_id."_index.php");
}
Я создал включить файл, который собирает информацию из сессии, включен в каждой защищенной странице, это где это развалилось. Я создал настраиваемые коды ошибок для каждого оператора if и обнаружил, что инструкция if здесь терпит неудачу. Повторяя переменные сеанса или вечернюю печать, массив сеансов ничего не возвращает.
$session_name = 'LOGIN'; // Set a custom session name
$secure = false; // Set to true if using https.
$httponly = true; // This stops javascript being able to access the session id.
$cookie_lifetime = '3600';
$cookie_path = '/';
$cookie_domain = '127.0.0.1';
session_set_cookie_params($cookie_lifetime, $cookie_path, $cookie_domain, $secure, $httponly);
session_name($session_name); // Sets the session name to the one set above.
session_start(); // Start the php session
session_regenerate_id(false); // regenerated the session, delete the old one.
if(isset($_SESSION['user'],$_SESSION['group_name'], $_SESSION['login_string']))
Я изменил порядок работы групп пользователей до того, как это сломалось, однако ни одна из переменных не прошла. Я изучаю его из-за этого: create a secure login script in php and mysql
Также мне нужно вызывать параметры сеанса каждый раз, когда пользователь посещает защищенную страницу?
Заранее благодарим за любые указатели.
Попробуйте положить 'session_start();' на вершине все, что самое главное, прежде чем вы вызываете сеанс. Вы вызываете 'session_name ($ session_name);' перед тем, как он начнется. 'it = session' –
Любые страницы, использующие переменную сеанса, должны вызывать в вашем случае, необходимо вызвать хотя бы имя session_ (с тем же параметром, что и для сеанса изначально задано), и session_start – Orangepill
@fred делает этот ответ выше session_name I был вызов соединения, переместив его ниже session_start, исправил проблему. Спасибо – Owen