dtbeaver
|
латентный вантузоид
|
|
|
|
Рег.: 04.01.2005
|
Сообщений: 7269
|
|
Рейтинг: 8194
|
|
php, сессии, вопрос
06.05.2008 00:23
|
|
|
могу ли я сохранить в сессии объект?
когда пишу так: code:
class TUser
{
var $login;
var $password;
function TUser($login,$password)
{
$this->login = $login;
$this->password = $password;
}
function Auth()
{
//...
}
}
...
if($user->Auth() == 1)
{
$content = "Регистрация прошла успешно. <br>\n";
$content .= "Вы вошли как ".$user->login."<br>";
$_SESSION['current_user']=$user;
}
else ...
...
if(session_is_registered('current_user'))
{
$user = $_SESSION['current_user'];
$content = "Регистрация прошла успешно. <br>\n";
$content .= "Вы вошли как ".$user->login."<br>";
...
- оно не работает, выдает пустую строку вместо логина.
|
|
|
StepLg
|
смотритель
|
|
|
|
Рег.: 26.11.2005
|
Сообщений: 350
|
Из: Москва
|
Рейтинг: 25
|
|
|
в сессии нельзя хранить объекты напрямую. используй сериализацию/ансериализацию.
Да, и совет. поставь в заголовок всех своих скриптов:
code:
@ini_set('asp_tags','off');
@ini_set('short_open_tag', 'off');
@ini_set('register_globals',0);
@ini_set('display_errors',1);
@ini_set('date.timezone',"Europe/Moscow");
@ini_set('max_execution_time', 10);
@set_time_limit(10);
//@ini_set('memory_limit',"32M");
@error_reporting(E_ALL | E_NOTICE | E_WARNING | E_PARSE | E_ERROR | E_STRICT);
setlocale(LC_ALL,"ru_RU.UTF-8");
mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');
mb_language('uni');
(кодировка, соответственно, должна быть UTF-8). Если не ошибаюсь, тебе должны выдасться предупреждения, когда ты будешь пытаться запихнуть в сессию экземпляр класса.
|
|
mkal
|
RIP
|
|
|
|
Рег.: 29.12.2004
|
Сообщений: 3036
|
|
Рейтинг: 1658
|
|
|
попробуй его серилизовать перед сохранением и десерилизовать после чтения, должно работать. Только ресурсы так сохранить не получится, думаю (дескрипторы файлов и бд и т.п.)
|
|
dtbeaver
|
латентный вантузоид
|
|
|
|
Рег.: 04.01.2005
|
Сообщений: 7269
|
|
Рейтинг: 8194
|
|
Re: php, сессии, вопрос
[re: StepLg]
06.05.2008 00:38
|
|
|
спасибо, я уже тоже подумал про сериализацию, но очень влом делать, думал вдруг можно малой кровью. а насчет этой магии code:
@ini_set('asp_tags','off');
@ini_set('short_open_tag', 'off');
@ini_set('register_globals',0);
@ini_set('display_errors',1);
@ini_set('date.timezone',"Europe/Moscow");
@ini_set('max_execution_time', 10);
@set_time_limit(10);
//@ini_set('memory_limit',"32M");
@error_reporting(E_ALL | E_NOTICE | E_WARNING | E_PARSE | E_ERROR | E_STRICT);
если я оставлю только эти строки, я так понимаю юникод будет необязателен? просто в юникод неохота все переводить, я под виндою сижу и не уверен что PHP Expert Editor юникод схавает. не в блокноте же кодить.
|
|
|
dtbeaver
|
латентный вантузоид
|
|
|
|
Рег.: 04.01.2005
|
Сообщений: 7269
|
|
Рейтинг: 8194
|
|
|
кстати, а можно сериализовать в ассоциативный массив? он в сессии сохранится?
|
|
|
StepLg
|
смотритель
|
|
|
|
Рег.: 26.11.2005
|
Сообщений: 350
|
Из: Москва
|
Рейтинг: 25
|
|
|
блокнот как раз точно не схавает:) да, будет работать.
строчки с mb_* устанавливали кодировку для функций типа mb_* для того, чтобы они корректно работали с многобайтовыми кодировками.
Если Вы их не используете - все будет в порядке.
А для разработки очень рекомендую Eclipse + PDT. Уже год в ней работаю, на мой взгляд - лучшая из вещей. Попробуйте
|
|
eyescream
|
nächste Riff
|
|
|
|
Рег.: 20.02.2005
|
Сообщений: 426
|
|
Рейтинг: 392
|
|
|
В ответ на:
спасибо, я уже тоже подумал про сериализацию, но очень влом делать, думал вдруг можно малой кровью
Что именно тебе здесь делать влом? [un]serialize($o)?
|
Current Mortal Sin: гордыня. Current Wise Thought: was ist wenn der Vorhang fällt? |
|
eyescream
|
nächste Riff
|
|
|
|
Рег.: 20.02.2005
|
Сообщений: 426
|
|
Рейтинг: 392
|
|
Re: php, сессии, вопрос
[re: mkal]
06.05.2008 11:31
|
|
|
Ресурсы (я имею в виду тип resource здесь) в пхп это просто числа (типа хендлов). Сохранить-то их скорее всего получится, но толку вне контекста сохранения не будет никакого от них.
|
Current Mortal Sin: гордыня. Current Wise Thought: was ist wenn der Vorhang fällt? |
|
dtbeaver
|
латентный вантузоид
|
|
|
|
Рег.: 04.01.2005
|
Сообщений: 7269
|
|
Рейтинг: 8194
|
|
|
проблема решена сериализацией в ассоциативный массив в порядке флуда: да, влом делать сериалайз и обратно. не потому что это сложно, а потому что есть хороший шанс забыть про это дело при изменении класса. было бы замечательно, если б сам пхп сериализовал объекты и вообще, очень не хватает кнопки "Сделать зашибись"
|
|
|
lomik
|
|
|
|
|
Рег.: 30.12.2003
|
Сообщений: 778
|
|
Рейтинг: 475
|
|
|
че-то у меня сложилось стойкое впечатление, что ты чего-то недопонимаешь, придумываешь какие-то сериализации в ассоциативные массивы...
http://ru2.php.net/serialize
|
|
dtbeaver
|
латентный вантузоид
|
|
|
|
Рег.: 04.01.2005
|
Сообщений: 7269
|
|
Рейтинг: 8194
|
|
Re: php, сессии, вопрос
[re: lomik]
06.05.2008 21:14
|
|
|
внатуре недопонимаю. я думал имеется ввиду в принципе понятие преобразования в последовательную форму хранения - например в строку.
|
|
|