Intereting Posts
Уведомление push iOS не работает при использовании планировщика crontab PHP, извлечение файла .txt и редактирование одной строки Кодирование строки как UTF-8 с спецификацией в PHP Безопасность – сеансы (использование по умолчанию – Cookie) по сравнению с локальным хранилищем Как запретить пользователям доступ к файлам на сервере? Неустранимая ошибка: превышено максимальное время выполнения 400 секунд Я хочу, чтобы мой поиск показывал только результаты с соответствующими значениями полей. Как это делается? «Предупреждение: mysql_query (): предоставленный аргумент не является допустимым MySQL-Link» – Почему? Карты SoapServer функционируют взаимозависимо, когда сообщения wsdl имеют одинаковое имя части Невозможно выполнить команды мастеров Laravel PHP – Ошибочная петля алфавита Преобразование html в pdf с арабским Laravel Remember_token больше не создается Laravel содержимое двоичного файла, указанное в php print_r, но не сохраненное в mysql Производительность MySQL node.js

Мои сеансы php продолжают теряться после входа в систему

Я много читал о лучших методах безопасности php, и я стараюсь использовать их на моем сервере xampp.

У меня есть include, который выполняет всю мою безопасность, ddos, управление сеансом, а в функции есть функция sec_session_start. Код ниже, но когда я пытаюсь войти в систему, а затем перенаправляюсь обратно на свою домашнюю страницу, все данные сеанса исчезли. На моей странице процесса входа, прежде чем я сделаю перенаправление, он имеет все правильные данные сеанса.

После каждого заголовка я делаю «exit». Я также попытался написать session_write_close ();

Но это, похоже, не решает моих проблем.

Вот код функции.

function sec_session_start() { $session_name = 'AnyName'; // 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. ini_set('session.use_only_cookies', 1); // Forces sessions to only use cookies. $cookieParams = session_get_cookie_params(); // Gets current cookies params. session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["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(true); // regenerated the session, delete the old one. } 

Эта функция вызывается на каждой странице.

Какие-либо предложения?

Опустите session_regenerate_id (true);

Это не является обязательным и не будет перезаписывать предыдущие файлы cookie, но «истина» – это настоящая проблема, так как она очищает предыдущие сведения о сеансе.

Взгляните на файл cookie (ы), который вы настраиваете. У меня была та же проблема с той же функцией, и я исправил ее, явно указав свой домен в session_set_cookie_params (). По какой-то причине были установлены файлы cookie для http://www.example.com и example.com.

Комментарии, касающиеся session_regenerate_id (true), кажутся красной селедкой, так как это должно копировать все существующие переменные сеанса … и это также работает.

 function sec_session_start() { $domain = 'example.com'; // note $domain $session_name = 'sec_session_id'; // Set a custom session name $secure = true; // Set to true if using https. $httponly = true; // This stops javascript being able to access the session id. ini_set('session.use_only_cookies', 1); // Forces sessions to only use cookies. $cookieParams = session_get_cookie_params(); // Gets current cookies params. session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $domain, $secure, $httponly); // note $domain session_name($session_name); // Sets the session name to the one set above. session_start(); // Start the php session session_regenerate_id(true); // regenerated the session, delete the old one. }