Warning: include() [function.include]: URL file-access is disabled in the server configuration in /usr/home/virtwww/w_altcode-ru_ffd5b838/http/php/ssm/php_sessioncookies.php on line 23

Warning: include(http://altcode.ru/include/style.php) [function.include]: failed to open stream: no suitable wrapper could be found in /usr/home/virtwww/w_altcode-ru_ffd5b838/http/php/ssm/php_sessioncookies.php on line 23

Warning: include() [function.include]: Failed opening 'http://altcode.ru/include/style.php' for inclusion (include_path='.:') in /usr/home/virtwww/w_altcode-ru_ffd5b838/http/php/ssm/php_sessioncookies.php on line 23

ALTCODE

Программирование - ALTCODE.ru   Все о языках программирования.

Assembler |  C  |  C++ |  Visual C++ |  C++ Builder |  C# |  Pascal |  Delphi |  BASIC |  Visual Basic |  Visual Basic .NET 
Java |  Perl |  Visual FoxPro |  Ruby |  PHP |  MySQL 
 Главная / PHP / Справочник по PHP (краткий)
Главная
Карта сайта
Наши партнеры
Контакты

<< предыдущая | в начало | следующая >>



Управление сессиями : Про сессии и Cookies

Проблема: - отключены Cookies
Бытует распространенное мнение, что сессии без Cookies не может существовать. Действительно, Cookies наиболее просто решает проблему идентификации пользователя, что необходимо для связи временного хранилища и данных сессии. Но вот что делать, если пользователь у себя в настройках отключил прием Cookies?
На этот случай разработчики PHP позаботились о передаче идентификаторов сессии не в Cookies, а каким-нибудь аналогичным путем, например через адресную строку броузера.
Решение: - изменение гиперссылок и форм
В PHP существует одна специальная константа с именем SID. Она всегда содержит имя группы сессии и ее идентификатор в формате имя=идентификатор. Именно в таком формате данные принимаются, когда они приходят из Cookies браузера. Таким образом, нам достаточно просто передать значение константы SID в сценарий, чтобы он "подумал", будто бы данные пришли из Cookies.
Вот пример использования сессий без Cookies:
<?
session_name("testses");
session_start();
session_register("i");
$i=@$i+1;
?>
<body>
Вы открыли эту страницу
<?=$i?> раз. При закрытии браузера счетчик обнулиться.<BR>
<A href=sesclick.php?<?=SID?>>Нажмите для записи в счетчик!</A>
</body>
Этот пример будет работать, если у пользователя действительно отключены Cookies. Если они включены, PHP просто не будет генерировать константу SID и задействует Cookies.

Но в приведенном способе есть одно неудобство, а именно, везде в участки кода нужно вставлять <?=SID?>, и если вы гдето пропустили, то программа может не работать!
К счастью, разработчики PHP учли эту возможность, и решили уберечь нас от этого. По-этому если в какой-нибудь гиперссылке вы по ошибке пропустите <?=SID?>, PHP вставит его автоматически. При этом не повредив остальные параметры, которые могут присутствовать в URL.

Для проверки можно использовать следующий пример:
<?session_start()?>
<body>
<A href="php.php">PHP</A>
<A href="php.php?ss=1">PHP - выражения</A>
Вот что получиться, при наведении мышки на эти ссылки:

http://www.spravkaweb.ru/php.php?PHPSESSID=81456f6a886f2104
http://www.spravkaweb.ru/php.php?ss=1&PHPSESSID=34f5d04a35601510f45

В PHP существует еще одна возможность использовать сессии с отключенными Cookies - добавление скрытх полей в формы, которые формируют сценарий, чтобы передать идентификатор сессии вызываемому документу.
Приведем пример, который выявляет эту возможность:
<?session_start()?>
<form action=act.php mathod=post>
</form>
А вот что получиться при просмотре нашей страницы в виде HTML:
<form action="act.php" method="post">
<INPUT TYPE=HIDDEN NAME="PHPSESSID" VALUE="0a561093f84d4321">
</form>
Из примера мы видим, что PHP добавил в форму скрытое поле с нужным именем и занчением.


<< предыдущая | в начало | следующая >>






Warning: include() [function.include]: URL file-access is disabled in the server configuration in /usr/home/virtwww/w_altcode-ru_ffd5b838/http/php/ssm/php_sessioncookies.php on line 100

Warning: include(http://altcode.ru/include/banners.php) [function.include]: failed to open stream: no suitable wrapper could be found in /usr/home/virtwww/w_altcode-ru_ffd5b838/http/php/ssm/php_sessioncookies.php on line 100

Warning: include() [function.include]: Failed opening 'http://altcode.ru/include/banners.php' for inclusion (include_path='.:') in /usr/home/virtwww/w_altcode-ru_ffd5b838/http/php/ssm/php_sessioncookies.php on line 100