2013-06-17 5 views
0

Я только начал использовать сеансы, и у меня были некоторые головные боли, у меня была эта работа вчера вечером, теперь она открылась сегодня ... больше не работает.Переменные сеанса, не переносящие на следующую страницу

В моем процессоре ввода у меня есть следующее, если все в порядке. Этот скрипт отлично работает, я повторил переменные сеанса, чтобы убедиться, что массив работает, и он это делает.

$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

Также мне нужно вызывать параметры сеанса каждый раз, когда пользователь посещает защищенную страницу?

Заранее благодарим за любые указатели.

+3

Попробуйте положить 'session_start();' на вершине все, что самое главное, прежде чем вы вызываете сеанс. Вы вызываете 'session_name ($ session_name);' перед тем, как он начнется. 'it = session' –

+0

Любые страницы, использующие переменную сеанса, должны вызывать в вашем случае, необходимо вызвать хотя бы имя session_ (с тем же параметром, что и для сеанса изначально задано), и session_start – Orangepill

+0

@fred делает этот ответ выше session_name I был вызов соединения, переместив его ниже session_start, исправил проблему. Спасибо – Owen

ответ

1

Попробуйте положить session_start(); на вершине все, что самое главное, прежде чем вы вызываете сеанс. Вы звоните session_name($session_name);, прежде чем он начнется.

it=session

0

ваш регенерирующий сеанс на каждой странице, что приводит к тому, что предыдущий сеанс уничтожает данные.

удалить session_regenerate_id(false);

Смежные вопросы