Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: unserialize(): Error at offset 5 of 81 bytes
 
 автор: RV   (28.03.2007 в 16:02)   письмо автору
 
 

php 4.4.2.
Форма авторизации. Имя пользователя, пароль, батон, чекбокс сохранить или нет.
Сам скрипт, точнее часть с того места где идет проверка на сохранение (ставить куку или нет):

<?
if ($autologin)
{
    
$userkey rand_string(); \\ получается обычная 32 строка типа мд5 хеша
    
//пара sql запросов;
    
$info['id'] = $usr['user_id']; \\ обычное число типа 10
    $info
['key'] = $userkey;
    
setcookie(COOKIE_NAME '_сdata'serialize($info), time() + 31536000COOKIE_PATHCOOKIE_DOMAIN); \\ COOKIE_NAME и остальные константы прописаны и корректны
}
?>


теперь кусок функции которая проверяет куку.

<?
if (isset($_COOKIE[COOKIE_NAME '_cdata']))
{
        
$cookie $_COOKIE[COOKIE_NAME '_сdata'];
        
$cookieinfo unserialize($cookie);
        ....
?>

Дома вин апач 2.0, пхп 5.1.4 все работает на раз два, сохраняет и все такое.
На хостинге пхп 4.4.2. После авторизации с чекбоксом Сохранить, Далее закрываю открываю броузер и вижу Notice: unserialize(): Error at offset 5 of 81 bytes in $cookieinfo = unserialize($cookie);
В чем проблема?

   
 
 автор: Trianon   (28.03.2007 в 16:30)   письмо автору
 
   для: RV   (28.03.2007 в 16:02)
 

результат сериализации нельзя в лоб в кукис совать.
Нужно его прогнать через base64_encode например .... ну и обратно.

   
 
 автор: RV   (28.03.2007 в 16:48)   письмо автору
 
   для: Trianon   (28.03.2007 в 16:30)
 

да ну

<?
// And now rebuild the cookie
        
$sessiondata['userid'] = $user_id;
        
$sessiondata['autologinid'] = $auto_login_key;
        
$cookiename $board_config['cookie_name'];
        
$cookiepath $board_config['cookie_path'];
        
$cookiedomain $board_config['cookie_domain'];
        
$cookiesecure $board_config['cookie_secure'];

        
setcookie($cookiename '_data'serialize($sessiondata), $current_time 31536000$cookiepath$cookiedomain$cookiesecure);
        
?>

это код пхпбб последней версии.
впринципе 10 версиями назад в данном месте он не сильно отличается

   
 
 автор: Trianon   (28.03.2007 в 16:55)   письмо автору
 
   для: RV   (28.03.2007 в 16:48)
 

Код phpbb это, Вы считаете, истина в последней инстанции?
Ради бога, мне не жалко :)))

   
 
 автор: RV   (28.03.2007 в 17:17)   письмо автору
 
   для: Trianon   (28.03.2007 в 16:55)
 

то что после сериализации результат можно пихать куда угодно это факт.
плюс открываем и читаем маунал serialize() returns a string containing a byte-stream representation of value that can be stored anywhere.

   
 
 автор: Trianon   (28.03.2007 в 17:35)   письмо автору
 
   для: RV   (28.03.2007 в 17:17)
 

>то что после сериализации результат можно пихать куда угодно это факт.

Кто б спорил.

>плюс открываем и читаем маунал serialize() returns a string containing a byte-stream representation of value that can be stored anywhere.

Да, только не всякий байт-стрим можно совать куда угодно.
То есть засунуть - удастся - сто пудов.
Высунуть назад - может уже и не выйти.

Применительно к кукисам - не только байт-стрим, а даже керектер-стрим.
Насколько я помню, к критичным символам относится как минимум точка-с-запятой.

Собственно, флейм я раздувать ненамерен - повод не тот.
Я лишь предложил решение: неохота применять - никто ж не заставляет.

   
 
 автор: RV   (29.03.2007 в 14:03)   письмо автору
 
   для: Trianon   (28.03.2007 в 17:35)
 

собственно проблема была в magic_quotes_gpc а не, как и следовало ожидать, в байт-стриме.

   
 
 автор: Trianon   (29.03.2007 в 14:34)   письмо автору
 
   для: RV   (29.03.2007 в 14:03)
 

Э... magic quotes - это та еще кака.
Я её стараюсь отключить сразу и навсегда, благо из .htaccess это обычно можно сделать.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования