[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с куками
Dima00782
Здравствуйте все.
Вот у меня есть скрипт, который осуществляет выход вошедшего пользователя, то есть уничтожает переменные сессии и если пользователь кликал на чекбокс "Запомнить меня", то скрипт еще удаляет куки. Но почему-то нифига не получается. Поделитесь опытом, помогите.

<?
session_start();// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!!
if (empty($_SESSION['login']) or empty($_SESSION['password']))
{
//если не существует сессии с логином и паролем, значит на этот файл попал невошедший пользователь. Ему тут не место. Выдаем сообщение об ошибке, останавливаем скрипт
$exit = 'Доступ на эту страницу разрешен только зарегистрированным пользователям. Если вы зарегистрированы, то войдите на сайт под своим логином и паролем<br><a href="index.php">Главная страница</a>';
}
else
{
unset($_SESSION['password'],$_SESSION['login'],$_SESSION['id']); // уничтожаем переменные в сессиях
if (isset($_COOKIE['auto']))
{
setcookie("auto", "", time() - 3600); // уничтожение кук
setcookie("login", "", time() - 3600);
setcookie("password", "", time() - 3600);
setcookie("id", "", time() - 3600);
}
$exit = '<h2>До Свидания.</h2><a href="index.php">Главная страница</a>';
// отправляем пользователя на главную страницу.
};
define ('START_TIME', microtime (true));
define( '_saIT', 1 );
require_once ('inc/bd.php');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<
html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en"><head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<
title>Выход</title>
<
link href="css/screen2.css" media="screen, projection" rel="stylesheet" type="text/css">
<
link href="css/print.css" media="print" rel="stylesheet" type="text/css">
<
link rel="shortcut icon" href="img/favicon.ico" type="image/ico">
<!--[
if IE]>
<
link href="/export/system/modules/ru.tusur.ica/resources/stylesheets/ie.css" media="screen, projection" rel="stylesheet" type="text/css" />
<![
endif]-->

<
script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
<
script src="js/jcarousellite_1.js" type="text/javascript"></script>
<
script src="js/application.js" type="text/javascript"></script>

<!--[
if lt IE 7]>
<
script src="/system/modules/ru.tusur.ica/resources/javascripts/ie6.stop.js" type="text/javascript"></script>
<
script src="/system/modules/ru.tusur.ica/resources/javascripts/pngfix.js" type="text/javascript"></script>
<![
endif]-->

</
head><body>

<? require_once ('inc/head.php') ?>
<div class="content-wrapper" id="top">
<
div id="navigation">
<
ul>
<? require_once ('inc/nav.php') ?>
</ul>
</
div>
</
div>
<
div class="content-wrapper"><div id="main">
<
div id="submenu"><ul>
<? require_once ('inc/left.php') ?>
</ul></div>
<
div id="body">

<
h1>Выход</h1>
<? echo $exit; ?>
<p> </p>

</
div>
</
div>
</
div>

<? require_once ('inc/foot.php');
mysql_close($db);
printf ("Страница сгенерирована за %.9f c", microtime (true) - START_TIME);?>

</body></html>




Спустя 6 минут, 38 секунд (25.05.2010 - 11:16) Basili4 написал(а):
unset($_SESSION['password'],$_SESSION['login'],$_SESSION['id']); - сессию не так уничтожают
а вот как session_unset(); и все переменные тю тю.

А куки ты правельно удаляешь по учебнику.

Спустя 18 минут, 22 секунды (25.05.2010 - 11:35) zarafar написал(а):
Цитата (Basili4 @ 25.05.2010 - 08:16)
unset($_SESSION['password'],$_SESSION['login'],$_SESSION['id']); - сессию не так уничтожают
а вот как  session_unset(); и все переменные тю тю. 

А куки ты правельно удаляешь по учебнику.

Все правильно он применяет unset();

Спустя 2 минуты, 42 секунды (25.05.2010 - 11:38) Basili4 написал(а):
zarafar

session_unset() освобождает все переменные сессии, зарегистрированные на данный момент.

А в примере Dima00782 есть вариант забыть про какую нибудь переменную.


Примечание: если используется $_SESSION (или $HTTP_SESSION_VARS для PHP 4.0.6 или ниже), применяйте unset() для разрегистрирования переменной сессии, т.е. $_SESSION = array();

Спустя 1 минута, 11 секунд (25.05.2010 - 11:39) zarafar написал(а):
Цитата (Basili4 @ 25.05.2010 - 08:38)
zarafar

session_unset() освобождает все переменные сессии, зарегистрированные на данный момент.

А в примере Dima00782 есть вариант забыть про какую нибудь переменную.

Это ничего не меняет, если нужно освободить все переменные сессии $_SESSION = array();

Спустя 1 минута, 36 секунд (25.05.2010 - 11:40) Basili4 написал(а):
zarafar Это для старых версий php
Я отредактироал свой предидущий пост

Спустя 1 минута, 45 секунд (25.05.2010 - 11:42) zarafar написал(а):
Basili4 smile.gif

Спустя 5 часов, 45 минут, 4 секунды (25.05.2010 - 17:27) Dima00782 написал(а):
Спасибо, за наставления. Но у меня проблема не удаляются куки, а сессии вроде норм работают.
Выводиться сообщение "Доступ на эту страницу разрешен только зарегистрированным пользователям...", но сессии удаляются(видно потому что аватар и имя пользователя исчезают).
Ссылаюсь на этот скрипт ссылкой HTML, может быть в этом проблема??? Нашёл ещё одну интересную весчь, если перейти на страницу через ссылку, то выводиться сообщение что сессии не существует, но елси просто обновить страницу, то всё идеально работает и куки удаляются и переменные сессии тоже.
Подскажите пожайлуста в чём проблема???

Спустя 21 час, 7 минут, 31 секунда (26.05.2010 - 14:35) Dima00782 написал(а):
Спасибо большое за советы. Всё решил уже. Странная сила форумов как только напишешь просьбу о помощи, так сразу приходит решение проблемы, через день или два. smile.gif

Спустя 1 день, 3 часа, 21 минута (27.05.2010 - 17:56) Dima00782 написал(а):
Кстати, что там с сессиями??? Как всё таки лучше делать для новой версии php?

Спустя 1 час, 16 минут, 3 секунды (27.05.2010 - 19:12) Gabriel написал(а):
может туплю но всеже http://es.php.net/manual/en/function.session-destroy.php

Спустя 24 минуты, 50 секунд (27.05.2010 - 19:37) Rand написал(а):
Цитата (Dima00782 @ 27.05.2010 - 14:56)
Кстати, что там с сессиями??? Как всё таки лучше делать для новой версии php?

$_SESSIOIN=array();
session_destroy();


Gabriel, на сколько я понимаю, session_destroy() тупо удаляет файл сессии с диска.

Спустя 7 минут, 37 секунд (27.05.2010 - 19:44) Gabriel написал(а):
ну насколько я понимаю это где-то так. в ообщем то что и теребуются ТС (как я понял при беглом чтении темы). только все-же unset(); перед вызовом session_destoy(); не будет лишним.

Спустя 1 час, 57 минут, 5 секунд (27.05.2010 - 21:41) Rand написал(а):
Ну, я тоже думаю переменные надо очищать, т.к.:
session_start(); //переменные из файла сессии заносятся в память или создается новая сессия
$_SESSION['var']="Я перемменная сессии, я существую!";
session_destroy(); //удаляем файл сессии
echo $_SESSION['var']; //выведет значение переменной
Но это не критично, если после session_destroy() сразу делать
Header("Location: урл");die();
после завершения работы скрипта всё равно все переменные разрушаться

Спустя 9 часов, 26 минут, 7 секунд (28.05.2010 - 07:07) Dima00782 написал(а):
Вообще я думал алгоритм такой:
  • Запустить сессию
  • Зарегистрировать переменные
  • Разрегистрировать переменные
  • Уничтожить сессию
Вот так наверное правильно. Я использую $_SESSION так что unset() применяю перед session_destroy.
Правильно?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.