Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: банально но не пашет...

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Вездеход
Отправлено: 14 Сентября, 2008 - 13:36:25
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




проблема такая.
на сайте авторизация основана на сессиях. принцип прост - если человек не авторизован - ему выдается форма авторизации а остальное блокируется. иначе грузится админка.
если чел вводит ошибочный логин и пасс - ему выдается сообщения об ошибках соответствующих. иначе грузится сайт.
проблема в чем. при удачном вводе логина и пароля в сессии прописывается что чел авторизован а ему выводится сообщение что типа все ок - нажмите сюда для входа в админку.
так вот - сообщение это выводится успешно. а жму на ссылку для перехода - сессия убивается...

вот код:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. if($action=="exit") { $_SESSION["auth"]=""; session_unset(); Header("Location: $adminzone"); exit; }
  4. $admlpfile="путь к файлу с данными"; // пока все на файлах...
  5. $auth_file=file($admlpfile);
  6. if(!isset($_SESSION["auth"]))
  7. {
  8.         echo $auth_form_top; // загрузка верхней части формы
  9.         if(!isset($_POST["auth"])) { echo $auth_form_a; // вывод формы авторизации }
  10.     else {
  11.         $auth_error="n";
  12.                 $auth["pass"]=trim($auth["pass"]);
  13.         $auth["login"]=trim($auth["login"]);
  14.         $auth_file[1]=trim($auth_file[1]);
  15.         $auth_file[2]=trim($auth_file[2]);
  16.         if(!isset($auth["login"]) or empty($auth["login"])) { echo $auth_form_e1; // вывод ошибки
  17. $auth_error="y"; }
  18.         else { if($auth["login"]!==$auth_file[1]) { echo $auth_form_e3; $auth_error="y";}}
  19.         if(!isset($auth["pass"]) or empty($auth["pass"])) { echo $auth_form_e2; $auth_error="y";}
  20.         else { if($auth["pass"]!==$auth_file[2]) { echo $auth_form_e4; $auth_error="y";}}
  21.         if($auth_error=="y") {echo $auth_form_a;} else { $_SESSION["auth"]="ok"; echo $auth_form_ok; // вот тут как раз и происходит вывод сообщения что все успешно
  22. }
  23.     }
  24.         echo $auth_form_bot; // низ формы
  25.         exit;
  26. }
  27. /* остальная часть */
  28. ?>
  29.  
  30.  


код оч старый - вот решил улучшить\обновить. кто что скажет? )


Отредактировано модератором: Andrey5555, 14 Сентября, 2008 - 20:18:25


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Andrey5555
Отправлено: 14 Сентября, 2008 - 20:20:19
Post Id


Частый гость


Покинул форум
Сообщений всего: 183
Дата рег-ции: Авг. 2007  


Помог: 0 раз(а)




Хм.. А зачем передавать в сессию, что все нормально??
Не вариант в сессии передать session_id () ?
 
 Top
valenok Модератор
Отправлено: 15 Сентября, 2008 - 00:11:15
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




А где session_start( ) у очень старого кода ?


-----
Truly yours, Sasha.
 
My status
 Top
Вездеход
Отправлено: 15 Сентября, 2008 - 14:46:15
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




valenok стартуется сессия в самом начале кода. а так как все действия происходят в одном скрипте - то получается что сессия стартуется постоянно, а следовательно все путем.
Andrey5555 нет не вариант... в сессию записывается то что авторизация прошла успешно. это нужно в дальнейшем. =)


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
Andrey5555
Отправлено: 15 Сентября, 2008 - 16:53:37
Post Id


Частый гость


Покинул форум
Сообщений всего: 183
Дата рег-ции: Авг. 2007  


Помог: 0 раз(а)




А попробуйте убрать первую строку кода. Ведь там session_unset ();
А ссылка открываеться в новом окне?
Попробуйте установить время сессии.
 
 Top
valenok Модератор
Отправлено: 15 Сентября, 2008 - 17:26:24
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)






-----
Truly yours, Sasha.
 
My status
 Top
UA.ProG
Отправлено: 15 Сентября, 2008 - 17:54:49
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Июль 2008  
Откуда: Николаев,Украина


Помог: 0 раз(а)

[+]


Тут могу сказать одно , явной ошибки в этой части кода нету.
(Добавление)
session_unset() выполняеться тоько в одном случае, а инициалзиация сесси по ходу выше


-----
--------------MoZG--------------
---------Google спасёт мир------
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB