Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с unserialize, cookies 
V
    Опции темы
lancelot555
  Дата 9.1.2006, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 19.2.2005

Репутация: нет
Всего: нет



В общем есть скрипт авторизации построенный на куках. В index.php есть форма для ввода логина пароля, затем создается кука
Код

$mass['login']=$login;
$mass['pass']=$pass;
$tocookie=serialize($mass);
setcookie("auth",$tocookie,time()+10800);


На остальных страницах вот такой код проверяет логин пароль:
Код

$mass=unserialize($auth);
if($mass['login']=="login" && $mass['pass']=="pass") 
{отображается страница} else {echo "Доступ запрещен";}


На локальном сервере все работает как надо, но хосте не работает...
Кука создается, к примеру если написать echo $auth; то выводится сериализнутый массив
а если сделать $mass=unserialize($auth); то почему то функция не выполняется, то есть массис mass оказывается пустым и echo mass['login'] не выводит ничего smile

Это сообщение отредактировал(а) lancelot555 - 9.1.2006, 15:25
--------------------
Hи что так не поpтит цель, как попадание! =)
PM MAIL   Вверх
Mal Hack
Дата 9.1.2006, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Пароль охранять в сессию не надо.
Глянь тут: http://vingrad.ru/PHP-ART-002849, что надо сохранять в куки.
PM ICQ   Вверх
Cheba
Дата 9.1.2006, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: 1
Всего: 62



Это глюк PHP. smile
Бывает, что у него не получается рассериализировать свой же массив. Редко, но бывает. Я так и не нашел закономерности...
PM MAIL ICQ   Вверх
Mal Hack
Дата 9.1.2006, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Cheba сколько исходных комбинация может быть для результата md5?
Вот тут в принципе такая же фигня.
PM ICQ   Вверх
Cheba
Дата 9.1.2006, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: 1
Всего: 62



Mal Hack, не то. MD5 - это хеш. Он из любой строки (любой длины) сделает тебе хеш в 128 бит. Потому и есть разные строки для которых хеш одинаков.
Serialize - совсем другое дело. Он как-раз для того и был придуман, чтобы восстанавливать структуру массива из строки. Он сохраняет структуру, типы и длины элементов. Длина сериализированного массива (строки - результата serialize) всегда длиннее суммы длин элементов массива в строковом представлении. Это именно глюк, к сожалению.
PM MAIL ICQ   Вверх
Mal Hack
Дата 9.1.2006, 17:41 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Хм... Но ведь смысл похож. В принципе, мы же просто шифруем массив, и пытаемся потом расшифровать. При этом КЛЮЧ он нигде не хранит...
Хотя фиг его знает, как это во внутреннем представлении PHP сделано.
PM ICQ   Вверх
Cheba
Дата 9.1.2006, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: 1
Всего: 62



Не похож смысл. smile
Попробуй из md5 (да вообще из любого хеша) достать исходную строку. smile
PM MAIL ICQ   Вверх
Mal Hack
Дата 9.1.2006, 22:50 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Cheba это-то понятно, что из md5 ты ничего не достанешь. Я имел ввиду другое.
Мы один и тот же хэш можем получить разными входными строками.
Вот в сериализации ИМХО, может быть тоже самое.
PM ICQ   Вверх
Cheba
Дата 10.1.2006, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: 1
Всего: 62



Не должно быть такого. Именно для того и придумывали serialize/unserialize чтобы иметь однозначный результат. Можешь воспринимать это как двустороннее шифрование по пустому ключу.
PM MAIL ICQ   Вверх
Alone
Дата 10.1.2006, 03:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: 1
Всего: 6



кстати, serialize ничего не шифрует.
Для эксперимента попробуй вывести результат на экран...
serialize() возвращает строку с байтово-поточным представлением значения value, которое может храниться где угодно.

Это используется для хранения или передачи PHP-значений повсюду без потери их типа и структуры.


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
Cheba
Дата 10.1.2006, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pointless one
***


Профиль
Группа: Vingrad developer
Сообщений: 1777
Регистрация: 27.11.2003
Где: /dev/null

Репутация: 1
Всего: 62



Я знаю, но аналогия вполне уместна ведь по сути это преобразование формата данных. Вот только проблема в том, что unserialize'у не всегда удается восстановить структуру исходных данных.
PM MAIL ICQ   Вверх
RaZoR
Дата 11.1.2006, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 6.5.2004
Где: Оренбург

Репутация: нет
Всего: 1



попробуй так:
Код
unserialize(stripslashes(...));

PM MAIL ICQ   Вверх
Wiedzmin
Дата 30.1.2006, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 17.1.2006

Репутация: нет
Всего: нет



Цитата

Notice: unserialize(): Error at offset 14 of 3705 bytes in c:\internet\home\localhost\www.....php on line 40


Что делать если такое выходит? В сериализованом массиве есть тексты не такой уж маленькой длины...
PM MAIL   Вверх
therik
Дата 23.10.2006, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 26.9.2005

Репутация: нет
Всего: нет



В общем нашел я в чем проблема. На самом деле когда в сериализованной строке встречаются кавычки, то php перестает их десериализировать.Выход один обрабатывать сериализуемые данные и удалять кавычки, ну либо еще что придумать, добавляя слэш, не дали заметного результата.
PM MAIL   Вверх
Vovarza
Дата 24.4.2010, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 3.5.2009

Репутация: нет
Всего: нет



Цитата

unserialize(stripslashes(...));

Cпасибо, помогло!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0853 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.