У моего сервера возникли проблемы с равномерным распределением session_id
.Что вызвало, что пользователь вошел в систему с неправильными учетными записямиТак как я не ожидал, что это неправильное поведение заняло много времени.
Поэтому я начал присваивать session_id
самостоятельно.Я нашел некоторые не очень хорошо документированные функции и протестировал их, пока они не сработали.Я уверен, что так делать нельзя, но до сих пор это работало.
Казалось, мой провайдер изменил некоторые настройки, и вдруг он больше не работает.
Вот мой код.Каждый раз, когда кто-то посещает какую-либо страницу, эта функция должна проверять, вошел ли он в систему, и выдавать ему новый session_id()
session_start();
function isLoggedIn(){
if (isset($_SESSION["user_id"]) and isset($_SESSION["user_agent"])) {
if ($_SESSION["user_agent"] != md5($_SERVER['HTTP_USER_AGENT'])) {
$loggedIn = FALSE;
}else{
$loggedIn = TRUE;
}
}
else {
$loggedIn = FALSE;
}
if ($loggedIn == FALSE) {
header("Location: login.php?displayinfo=1");
die("<br /><br /> you are not logged in");
}
// $newid = session_create_id($_SESSION["user_id"]); // isn't working for some reason
$newid = md5($_SESSION["user_id"]) . random_str(20);
// Set new custome session ID
session_id($newid);
session_commit();
session_start();
return $loggedIn;
}
Может быть, вы можете дать мне несколько советов, как мне сделать это правильно.