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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Авторизация с помощью сессий, Элемент сессии не сохраняется... 
V
    Опции темы
Treod
Дата 5.12.2008, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Написал скрипт авторизации с помощью сессий. Авторизация проходит успешно, но при переходе на следующие страницы сессия обрывается. 
Сервер настроен так, что сессия стартуется автоматически. Не пойму в чем проблема...:(
Листинг:
Страница с формой:
Код

<html>
<head>
 <title>Страница авторизации</title>
 <meta http-equiv="content-type" content="text/html; charset=windows-1251">
 <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body bgcolor="#ffffff">

<form action="auth.php" method="post">
<table width="15%" border="0" cellspacing="0" cellpadding="2">
 <tr>
  <td>
   Login:
  </td>
  <td>
   <input type="text" name="login">
  </td>
 </tr>
  <tr>
  <td>
   Password:
  </td>
  <td>
   <input type="password" name="pass">
  </td>
 </tr>
 <tr>
  <td>
   <input type="submit" value="Войти">
  </td>
 </tr>
</table>
</form>

</body>
</html>


Страница авторизации:
Код

html>
<head>
 <title></title>
 <meta http-equiv="content-type" content="text/html; charset=windows-1251">
 <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body bgcolor="#ffffff">

<?php
$rez=FALSE;
echo $_POST['login']!="login";
if ($_POST['login']=="login" || $_POST['pass']=="pass") $rez=TRUE;
if ($rez==FALSE) {
    //header("location: index.php");
    echo "Вы не авторизованы, попробуйте снова";
    exit;
}
$_SESSION['auth']=TRUE;
if ($_SESSION['auth']==TRUE) echo "Вы авторизованы. Можете начать загрузку файла <br>";
?>
<a href="up.php">Загрузить файл</a>
<a href="destroy.php">Выйти</a>
</body>
</html>


Страница загрузки файла (для примера):
Код

<html>
<head>
 <title>Загрузка файлов на сервер</title>
 <meta http-equiv="content-type" content="text/html; charset=windows-1251">
 <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body bgcolor="#ffffff">

<?php 
if (!isset($_SESSION['auth'])) {
    echo "Доступ закрыт";
    exit;
}
?>

<b>Форма для загрузки файлов</b>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename"><br>
<input type="submit" value="Загрузить"><br>
</form>

</body>
</html>

PM MAIL ICQ   Вверх
patap
Дата 5.12.2008, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 26
Всего: 40



а ты пробовал через session_start()? может че-то не так с настройками автосессии


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
Treod
Дата 5.12.2008, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Пробрвал... Вот результат:
Цитата

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at Z:\home\test2.ru\www\auth\auth.php:11) in Z:\home\test2.ru\www\auth\auth.php on line 12

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\test2.ru\www\auth\auth.php:11) in Z:\home\test2.ru\www\auth\auth.php on line 12

PM MAIL ICQ   Вверх
bars80080
Дата 5.12.2008, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(patap @  5.12.2008,  14:07 Найти цитируемый пост)
а ты пробовал через session_start()? 

 smile а что, можно запускать сессии без этой команды?


Цитата(Treod @  5.12.2008,  14:16 Найти цитируемый пост)
Cannot send session cookie - headers already sent by 

не могу установить куки, пишет, заголовки уже отосланы. это потому, что session_start(); надо располагать в самом начале скрипта (каждого, где хотим видеть действие сессии). т.е.:

Код

<?php

session_start();

?><html>
<head>
...

даже пробела перед ней быть не должно
PM MAIL WWW   Вверх
patap
Дата 5.12.2008, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 26
Всего: 40



Цитата

а что, можно запускать сессии без этой команды?


я первый раз встречаю случай с автоматическим запуском сессий, и предположил что session_start() в этом случае не нужена.

тогда почему Treod не запускает эту функцию на страницах где ему нужны сессии?


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
Treod
Дата 5.12.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Я так делал. Абсолютно идентичная ошибка...

з.ы.:Если в файле php.ini установлен в единицу параметр session.auto_start, то это делать не обязательно...

Это сообщение отредактировал(а) Treod - 5.12.2008, 15:37
PM MAIL ICQ   Вверх
bars80080
Дата 5.12.2008, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Treod @  5.12.2008,  14:32 Найти цитируемый пост)
Я так делал. Абсолютно идентичная ошибка...

а это точно целиком файл? может он подключается к какому-нибудь? а там уже вывод есть?


Цитата(Treod @  5.12.2008,  14:32 Найти цитируемый пост)
Если в файле php.ini установлен в единицу параметр session.auto_start, то это делать не обязательно...

вот поэтому я и не доверяю автоматике. контроля мало
PM MAIL WWW   Вверх
Treod
Дата 5.12.2008, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Выставил session.auto_start = 0.
Файл целиком. Вот листинг исправленной версии:
Код

<html>
<?php
session_start(); 
$rez=FALSE;
if ($_POST['login']=="login" || $_POST['pass']=="pass") $rez=TRUE;
if ($rez==FALSE) {
    echo "Вы не авторизованы, попробуйте снова";
    exit;
}
$_SESSION['auth']=TRUE;
if ($_SESSION['auth']==TRUE) echo "Вы авторизованы. Можете начать загрузку файла <br>";
?>
<head>
 <title></title>
 <meta http-equiv="content-type" content="text/html; charset=windows-1251">
 <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body bgcolor="#ffffff">
<a href="up.php">Загрузить файл</a>
<a href="destroy.php">Выйти</a>
</body>
</html>


Код

<html>
<?php
session_start(); 
if (!isset($_SESSION['auth'])) {
    echo "Доступ закрыт";
    exit;
}
?>
<head>
 <title>Загрузка файлов на сервер</title>
 <meta http-equiv="content-type" content="text/html; charset=windows-1251">
 <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body bgcolor="#ffffff">
<b>Форма для загрузки файлов</b>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename"><br>
<input type="submit" value="Загрузить"><br>
</form>

</body>
</html>


Листинг ошибок:
Цитата

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at Z:\home\test2.ru\www\auth\auth.php:4) in Z:\home\test2.ru\www\auth\auth.php on line 5

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\test2.ru\www\auth\auth.php:4) in Z:\home\test2.ru\www\auth\auth.php on line 5
Вы авторизованы. Можете начать загрузку файла 
Загрузить файл Выйти


Цитата

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at Z:\home\test2.ru\www\auth\up.php:4) in Z:\home\test2.ru\www\auth\up.php on line 5

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\test2.ru\www\auth\up.php:4) in Z:\home\test2.ru\www\auth\up.php on line 5
Доступ закрыт


Это сообщение отредактировал(а) Treod - 5.12.2008, 15:51
PM MAIL ICQ   Вверх
bars80080
Дата 5.12.2008, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



ну, почему <html> идёт ранише запуска сессий?
Код

<html>
<?php
session_start(); 


PM MAIL WWW   Вверх
Treod
Дата 5.12.2008, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Исправил... но ошибка не исчезла...:((

Добавлено через 8 минут и 33 секунды
Только что залил на хост, все нормально работает...
Следовательно проблема в денвере... 
Спасибо за помощьsmile
PM MAIL ICQ   Вверх
patap
Дата 5.12.2008, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 26
Всего: 40



ворнинг пропал?

запистил твой скрипт, с условием if (1=1) $rez=TRUE; вместо твоего, сесси работают, можнет проблема не вних, а у тебя не проходит авторизация?



--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
Treod
Дата 5.12.2008, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Щас все нормально. Сессии работают. Просто надо было удалить предыдущую сессию для дальнейшей работы, ибо  в php.ini видимо выставлено время жизни не 0 и сессия не обрывается при закрытии браузера.

Это сообщение отредактировал(а) Treod - 5.12.2008, 16:15
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0718 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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