Всем доброго времени суток!
Раньше на серваке стояла FedoraCore7 с собранными из сыруов ручками Apache2.2.6/PHP5.2.5/MySQL5.0.45, сессии хранились в /tmp и все работало нормально. Но вдруго в одно и тоже время на всех сайтах перестала работать авторизация, вводишь логин\пароль тебя пропускают, а при следующем открытии страницы тебя опять считают гостем.
Оказалось, что PHP разучился рабоать с сессиями,вот отрывки кода и их вывод:#index.php
#Генерим ид сессии, получаем вот это c0cc060cf2f9523977d5d081ad4d5063
$ses_name = md5($userid.ip2long($IP).rand(1,20));#Обзываем сессию (c0cc060cf2f9523977d5d081ad4d5063)
session_id($ses_name);#Инициализируем сессию
session_start();#Записываем в нее юзера
$_SESSION['userid'] = $userid;#А здесь я получаю обрезанный до 18 символов ид c0cc060cf2f952397
session_id();<frames>
#main.php, скрипт во фрейме, получает ид сессии указанный выше
session_start();
session_id();
#Вот тут самое интересное! Скрипт ВСЕГДА отдает один и тотже ид n6shhlietuvkndpb18su46gdod, даже если открывать разными браузерами. Открываешь с другого компа он первый раз выдает правильный ид но обрезанный до 28 символов. А потом опять одно и тоже.
</frames>
И так во всех скриптах, причем дома под виндой все пашет.Погрешил на свои кривые руки, неправильно собравшие сервак, все снес и поставил все из родных рпмок. Фиг! тоже самое! Тогда я решил снести федору, тем более что давно собирался фряху поставить. Снес, поставил FreeBSD6.2. Все настроил, поднял и опять тоже самое.
uname -a FreeBSD ya.kg 6.2-RELEASE FreeBSD 6.2-RELEASE #2: Wed Dec 5 03:28:32 UTC 2007 root@ya.kg:/usr/obj/usr/src/sys/main_kernel i386
В ядро добавлен IPFW
Apache2.2.6/PHP5.2.5(CGI)/MySQL5.0.45-freebsd
В общем помогите советом! Чуствую себя тупым юзверем который тыкается во все углы, а простого решения перед носом не видит :)
Если при сборке не отключать сесии (--disable-session), они должны быть включены по умолчанию, на всякий случай проверь, доступны ли они, покажи вывод phpinfo(); раздел 'session'
Я вот читаю-читаю твой код, понять не могу, ты сам генеришь ид сессии? Зачем? :) когда ты пишешь session_start(); у тебя он сам генерится ($PHPSESSID = <ид сессии>;), то есть браузеру отдаются куки вида Set-Cookie: PHPSESSID=<ид сессии>. Если не хочешь PHPSESSID, переназови, session_name('MYSESSION');
Если сомневаешься в настройках, напиши скрипт наподобие этого:// -------- test.php ---------
<?php
if( isset($_POST['submit']) ) {
setcookie("PHPSESSID", ""); // убираем ид сессии
echo "сессия завершена";
echo "<FORM action='test.php' method='POST'>
<INPUT type='submit' name='submit1'>
</FORM>";
} else {
session_start();
echo "сессия запущена ";
echo "PHPSESSID = ".session_id();
echo "<FORM action='test.php' method='POST'>
<INPUT type='submit' name='submit'>
</FORM>";
}
?>
// ------------------------------он начинает и завершает сессию, при старте сессии должен выдаваться новый ид.
Dx
Ну вот, хоть ктото откликнулся :)
Спасибо за совет, но проблема была в другом, все вылечилось переносом хранилища сессий из /tmp в /var/php/sessions. Такое ощущения что PHP чемто не нравился /tmp.
P.S. А ид сессии я генерю потому что просто хочется поизвращатся :)
>Dx
>Ну вот, хоть ктото откликнулся :)
>Спасибо за совет, но проблема была в другом, все вылечилось переносом хранилища
>сессий из /tmp в /var/php/sessions. Такое ощущения что PHP чемто не
>нравился /tmp.
>P.S. А ид сессии я генерю потому что просто хочется поизвращатся :)
>Аналитические обзоры котировки курсы акции валюта фьючерсы
форекс обучение forex ленты валютных
и фондовых новостей экономический календарь событий
статьи трейдеров библиотека трейдеров auto trading.
Добро пожаловать в клуб трейдеров на сайте http://trader.uz