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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сессии и их принадлежность, к скрипту 
:(
    Опции темы
SoWa
Дата 4.5.2009, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

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



...
Есть главная страничка, где я просмтриваю переменную:
Код

$_SESSION['nick'];

Если она есть, то вывожу, что-то типа "Привет, $nick"
Есть так же страничка выхода, где простой скрипт из двух строк:
Код

unset($_SESSION['nick']);
header('location:main.php');

Но при переходе на main.php в сессии, в ячейке 'nick' так и остается лежать старое значение.
Но структура главной странички такова:
Код

<?php
session_start();
?>
<HTML> кусок
<?php
А вот тут проверка на существование переменной в сессии.
?>

И при этом пробовал двумя методами посмотреть на существование этой переменной:
сперва isset()
а потом заносил при выхоже туда определенную ерунду, и проверял, что лежит в переменной.
Даже после занесения ерунды на странице выхода, на главной все в порядке и там лежит имя пользователя.

Подскажите, допустима ли структура страницы с двумя скриптами. Или как можно оптимально реализовать вход-выход пользователя с помощью сессий.

Добавлено через 5 минут и 9 секунд
Пока никто не ответил, вспомнил, что весь этот код лежит не в main.php, а в header.php, которая прикрепляется ко всем страничкам.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
SneG0K
Дата 4.5.2009, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

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



Цитата(SoWa @  4.5.2009,  18:09 Найти цитируемый пост)
Есть так же страничка выхода, где простой скрипт из двух строк:

Код

session_destroy();
$_SESSION = array();
header('location:main.php');


Добавлено через 36 секунд
Так лучшеsmile
PM WWW Skype   Вверх
SoWa
Дата 4.5.2009, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

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



Окей, перепишу так smile
Хотя вообще с каждым днем узнаю все больше, и с каждым днем все больше ужасаюсь своим вчерашним каракулям- через некоторое время буду все страницы заново переписывать smile
Спасибо!


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
awers
Дата 4.5.2009, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



-- удалено --

Добавлено @ 19:31
Цитата(SoWa @  4.5.2009,  20:29 Найти цитируемый пост)
Окей, перепишу так Хотя вообще с каждым днем узнаю все больше, и с каждым днем все больше ужасаюсь своим вчерашним каракулям- через некоторое время буду все страницы заново переписывать Спасибо!

Ну процесс совершенствования остановить невозможно. Скорее всего даже через год, оглянувшись на вчерашний код вы будете понимать что можно написать лучше =)

Это сообщение отредактировал(а) awers - 4.5.2009, 19:33
PM MAIL WWW ICQ Skype   Вверх
SoWa
Дата 4.5.2009, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

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



Цитата(awers @  4.5.2009,  19:30 Найти цитируемый пост)
It does not unset any of the global variables associated with the session, or unset the session cookie. To use the session variables again, session_start() has to be called.


Мая твая не панимать. Трудно понятно, но как я понял, моя проблема в кука сессии типа, да?


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
awers
Дата 4.5.2009, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(SoWa @  4.5.2009,  20:32 Найти цитируемый пост)
Мая твая не панимать. Трудно понятно, но как я понял, моя проблема в кука сессии типа, да?

Не не. Вот оригинал
PM MAIL WWW ICQ Skype   Вверх
SneG0K
Дата 4.5.2009, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

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



Цитата(SoWa @  4.5.2009,  18:29 Найти цитируемый пост)
Хотя вообще с каждым днем узнаю все больше, и с каждым днем все больше ужасаюсь своим вчерашним каракулям- через некоторое время буду все страницы заново переписывать smile

Знаешь, я посмотрел на свой самый первый пост и ужаснулся!!!
PM WWW Skype   Вверх
SoWa
Дата 4.5.2009, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

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



Не, давайте по кусочкам:
Цитата

session_destroy() destroys all of the data associated with the current session. It does not unset any of the global variables associated with the session, or unset the session cookie. To use the session variables again, session_start() has to be called. 

In order to kill the session altogether, like to log the user out, the session id must also be unset. If a cookie is used to propagate the session id (default behavior), then the session cookie must be deleted. setcookie() may be used for that.


Цитата

session_destroy() destroys all of the data associated with the current session

Это дестроит все данные, находящиеся в сессии(её идентификатор и то, что она содержит(как я понял- свое, а не внесенное мной)).

Цитата

It does not unset any of the global variables associated with the session, or unset the session cookie

А это как понимать?! Если я в массив $_SESSION внес свою ячейку, то к ней не будет применен unset?
А что куков сессии касается, как они работают?

Цитата

To use the session variables again, session_start() has to be called. 

Просто убило... Если я снова вызываю функцию session_start(), то вся старая сессия восстанавливается, так? Мне этого то как раз и не нужно...

Цитата

In order to kill the session altogether, like to log the user out, the session id must also be unset. If a cookie is used to propagate the session id (default behavior), then the session cookie must be deleted. setcookie() may be used for that.

В двух словах, как я понял: "Если вы хотите почистить вашу сессию подчистую, чтоб и намека не осталось, чистите куки и радуйтесь новой пустой сессии". Так?

Заранее спасибо за внимание.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
SneG0K
Дата 4.5.2009, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

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



Цитата(SoWa @  4.5.2009,  20:35 Найти цитируемый пост)
В двух словах, как я понял: "Если вы хотите почистить вашу сессию подчистую, чтоб и намека не осталось, чистите куки и радуйтесь новой пустой сессии". Так?

Ну смотри, если ты не контролируешь сам куку, то достаточно вызвать session_destroy(), это уничтожит сессию (ее указатель) и очистить массив $_SESSION, тобишь попросту присвоить пустой массив... Этого хватает.
Если ты допустим в куках сам хранишь идентификатор, то удалять еще значение в кукисе...



Код

if (!isset($_COOKIE['sessid'])) {
    $sessId = md5(rand(time().rand(500, 1000), 50000));
    setcookie('sessid', $sessId, time() + 3600*24);
}
session_id($sessId);
session_start();

Пример использования собственного кукиса...

Кукис удаляется так:
Код

setcookie('sessid', '', time()-9999);

Напримерsmile
PM WWW Skype   Вверх
SoWa
Дата 4.5.2009, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

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



Цитата(SneG0K @  4.5.2009,  22:36 Найти цитируемый пост)
Если ты допустим в куках сам хранишь идентификатор, то удалять еще значение в кукисе...

Нет, с этим я пока не работаю... Ладно, завтра утром попробую еще поковырять сессии, отпишусь о результатах.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
SneG0K
Дата 4.5.2009, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

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



Цитата(SoWa @  4.5.2009,  21:51 Найти цитируемый пост)
Ладно, завтра утром попробую еще поковырять сессии, отпишусь о результатах. 

Не оставляй на завтра то, что не собираешься делать никогдаsmile))
Уничтожай сессию так, как я тебе показал... Это навернякаsmile
PM WWW Skype   Вверх
Photon
Дата 4.5.2009, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злобный программер
**


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

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



А в страничке выхода, в которой простой скрипт из двух строк session_start() имеется?

Это так, для начала вопросик.. smile

test.php
Код

<?php
    session_start();
    if (isset($_GET['start']))
        $_SESSION['nick'] = 'Photon';
    echo "<a href='/test1.php'>Выход</a><br />";
    if (isset($_SESSION['nick']))
        echo "nick = {$_SESSION['nick']}";
?>


test1.php
Код

<?php
    session_start();
    unset($_SESSION['nick']);
    header("Location: /test.php");
?>


Все замечательно удаляется и в массиве $_SESSION даже намека на nick не остается..

Это сообщение отредактировал(а) Photon - 4.5.2009, 23:15


--------------------
With best regards..
PM MAIL ICQ Skype GTalk Jabber   Вверх
SneG0K
Дата 4.5.2009, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

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



Цитата(Photon @  4.5.2009,  22:08 Найти цитируемый пост)
session_start()

Две строки session_start() выдадут ошибку... 
PM WWW Skype   Вверх
Photon
Дата 5.5.2009, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Злобный программер
**


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

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



А откуда их там будет две, если человек ясно сказал, что там простой скрипт из двух строчек?


--------------------
With best regards..
PM MAIL ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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