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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сесси в PHP, есть подозрение, что сессия не рвется... 
V
    Опции темы
MacTep
Дата 7.9.2009, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

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



Скрипт для закрытия сессии:
Код

<?
   session_start();
   // Unset переменной сессии.
   unset($_SESSION["authorized"]);
   // Наконец, разрушить сессию.
   session_destroy();

   // перенаправляем пользователя на index.php
   @header("Location: index.php");
?>
<a href="index.php">На главную</a>


Скрипт на вход:
Код

<?php
  // запускаем сессию
  session_start();
  // подключаемся к MySQL и базе данных
  require_once('config.php');
?>
<html>
<head>
<title>Заголовок</title>
</head>
<body>
<?php
  // если пользователь не авторизован, то выводим ссылку на login.php
  if (!isset($_SESSION['authorized'])) {
    ?>
    <p align = "right">  
    <a href="login.php">Войти</a>&nbsp<a href="registration.php">Регистрация</a><br>
    </p>
    <p>Вы не вошли. Воспользуйтесь, пожалуйста, ссылками справа.</p>
    <?php
    $_SESSION['player_name'] = 'guest';
  }
  else {
    // если пользователь авторизован, то сообщаем ему об этом и выводим ссылку на logout.php
    echo "<p align='right'>Вы вошли под именем: <b>".$_SESSION['player_name']."</b></p>";
    ?>
    <p>
    <a href='logout.php'><b>Выход</b></a><br>
    </p>
    <?php
  }
?>
</body>
</html>


Подключение к базе:
Код

<?php
  $database_host = "localhost";
  $database_name = 'mybase";
  $database_user = "myroot";
  $database_pass = "myroot";


  // Устанавливаем соединение с базой данных
  mysql_connect($database_host, $database_user, $database_pass) or 
  die("<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>");

  mysql_select_db($database_name) or
  die("<P>В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно.</P>");
?>


Почему при нажатии на выход у меня сессия не рвется ни фига? а так и остается висеть? Может дело в настройких пхп?


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
unicross
Дата 7.9.2009, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(MacTep @  7.9.2009,  22:13 Найти цитируемый пост)
  $database_name = 'mybase";

Эта ошибка в кавычках есть в скрипте? Или просто ошиблись при размещении на форуме?
Цитата(MacTep @  7.9.2009,  22:13 Найти цитируемый пост)
 @header("Location: index.php");

Собака здесь не нужна. Выводить ссылку после отправки такого заголовка уже бессмысленно. Следовательно:
Код

header("Location: index.php");
exit;

И вместо <? лучше использовать <?php.

У вас проблема случайно не связана с кешированием данных? Вставьте в начало скриптов
Код

header("Expires: Sun, 27 May 2007 01:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Pragma: no-cache");

PM MAIL WWW   Вверх
Ипатьев
Дата 7.9.2009, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



механизм сессий сам отсылает заголовки, запрещающие кэширование
так что они здесь не при чем.
как и все прочие замечания.


MacTep, что значит "не рвется ни фига"?
Можно дать какое-то более приближенное к программированию описание проблемы?

PM MAIL   Вверх
MacTep
Дата 7.9.2009, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

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



Цитата

Эта ошибка в кавычках есть в скрипте? Или просто ошиблись при размещении на форуме?

Просто ошибся при размещении на форуме.

Цитата

Выводить ссылку после отправки такого заголовка уже бессмысленно.

Выводил потому, что не происходит редиректа на индекс.пхп. Выводится ссылка, в том-то и дело.

Цитата

Можно дать какое-то более приближенное к программированию описание проблемы?

Возвращается на главную страничку, где снова переменная отвеащая за имя пользователя залогинившегося заполнена, не очищена. Таким образом войдя раз, выйти не могу. smile


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Ипатьев
Дата 7.9.2009, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



ну, надо отлаживать.
вывести сессию после дестроя.

попробовать session_write_close()
перед локейшеном.

Это сообщение отредактировал(а) Ипатьев - 7.9.2009, 22:29
PM MAIL   Вверх
unicross
Дата 7.9.2009, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(MacTep @  7.9.2009,  23:09 Найти цитируемый пост)
Выводил потому, что не происходит редиректа на индекс.пхп. Выводится ссылка, в том-то и дело.

Перед открывающем дескриптором в logout.php случаем нет переноса строки? Если вывод ошибок оключен, то увидете только ссылку без предупреждений. Ссылки быть вообще не должно! 


PM MAIL WWW   Вверх
Ипатьев
Дата 7.9.2009, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



unicross, это все хорошо и правильно, но вот только к поставленному вопросу не имеет ни малейшего отношения.
PM MAIL   Вверх
unicross
Дата 7.9.2009, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ипатьев, ваше мнение меня не интересует! Я отвечаю ТС, а не вам... И он будет решать имеет это отношение или нет... Держите свое мнение при себе, если ничем помочь не можете...
PM MAIL WWW   Вверх
Ипатьев
Дата 7.9.2009, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



охохо, как грозно smile
во-первых, решать будет не ТС. а практика. Чтобы решать, нужен опыт и знания. Если их нет, то только эксперимент.
во-вторых, то, что я говорю - это не "мнение", а факт. 
во-третьих, держите, пожалуйста, при себе свое мнение о том, кто тут должен держать мнение при себе. 
в-четверых,  если не можете написать ни одного слова по теме вопроса - попробуйте почитать, что пишут другие.


PM MAIL   Вверх
MacTep
Дата 8.9.2009, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

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



Цитата(unicross @  7.9.2009,  22:43 Найти цитируемый пост)
Перед открывающем дескриптором в logout.php случаем нет переноса строки?

Вот она загвоздка. Редактор у меня ставит признак разрывать строки. А для линуха это неприемлемо. Он его по-дурацки интерпретировал. Убрал - заработало. Спасибо всем большое! ;)


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Simpliest
Дата 8.9.2009, 03:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(MacTep @  8.9.2009,  00:12 Найти цитируемый пост)
Редактор у меня ставит признак разрывать строки. А для линуха это неприемлемо

Linux тут не причем. Нельзя выводить ничего "ДО" отправки header()


--------------------
user posted image
PM   Вверх
Ипатьев
Дата 8.9.2009, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



во-первых, не только до header, но и session_start
во-вторых, если "ставит редактор", то, скорее всего, не "перевод строки", а BOM
в-третьих, на "очищение переменной" данные проблемы никак повлиять не могут. 

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.

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


 




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


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

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