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]   

> Без описания
Crate
Отправлено: 03 Февраля, 2012 - 10:23:48
Post Id



Посетитель


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


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




Привет всем.
Начал делать авторизацию в админку но проблема вроде с хттп-загаловками. Вот код:

Класс системы
PHP:
скопировать код в буфер обмена
  1. class System extends Db {
  2.         /* Model */
  3.         function return_login () {
  4.                 $query = "SELECT username, password FROM users WHERE id = '1'";
  5.                 $result = $this->sql($query);
  6.                 return $result;
  7.         }
  8.                
  9.         /* Controller */
  10.         function clean_data ($string) {
  11.                 $result = trim ($string);
  12.                 return $result;
  13.         }
  14.  
  15.         function print_login () {
  16.                 $result = $this->return_login();
  17.                 $row = mysql_fetch_assoc ($result);
  18.                 return $row;
  19.         }
  20.                
  21.         function status ($post) {
  22.                 $core = new Core ();
  23.                 $data = $this->print_login();
  24.                 if ($post['username'] == $data['username']
  25.                 && $post['password'] == $data['password']) {$result = true;}
  26.                 else {$result = false;}
  27.                 return $result;
  28.         }
  29.                
  30.         function login ($post) {
  31.                 $core = new Core ();
  32.                 $data = $this->print_login();
  33.                 if ($post['username'] == $data['username']
  34.                 && $core->encrypt($post['password']) == $data['password']) {
  35.                         setcookie ("username", $post['username'], time()+10800);
  36.                         setcookie ("password", $core->encrypt($post['password']), time()+10800);
  37.                         header ("Location: index.php");
  38.                 }
  39.                 else {header ("Location: system.php?mode=login");}
  40.         }
  41.                
  42.         function logout ($post) {
  43.                 if ($this->status($post) == true) {
  44.                         setcookie ("username", NULL, time()-10800);
  45.                         setcookie ("password", NULL, time()-10800);
  46.                 }
  47.         }
  48. }
  49.        
  50. $system = new System ();


Проверка подлинности:
PHP:
скопировать код в буфер обмена
  1. if (isset($_COOKIE)) {$check = $system->status($_COOKIE);}
  2. else {$check = false;}
  3. if ($check == false) {header ("Location: index.php");}


Контрольный файл
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. /* This file is part of Stash (http://www.stash.com) */
  3. define ("IN_STASH", true);
  4. include_once ("../includes/core.php");
  5.        
  6. /* Access checking */
  7. if (isset($_COOKIE)) {$check = $system->status($_COOKIE);}
  8. else {$check = false;}
  9. if ($check == true) {header ("Location: index.php");}
  10.        
  11. if ($_POST) {$system->login($_POST);}
  12.        
  13. // $mode = $core->clean_request($_GET['mode']);
  14.        
  15. if (!$_GET['mode'] and $check == false) {
  16.         header ("Location: system.php?mode=login");
  17. }
  18. if ($_GET['mode'] == "login" and $check == true) {
  19.         header ("Location: index.php");
  20. }
  21. if ($_GET['mode'] == "login" and $check == false) {
  22.         $styles->load(PATH_TO_PANEL_STYLE."/template/login.php");
  23. }
  24. if ($_GET['mode'] == "logout" and $check == true) {
  25.         $system->logout($_COOKIE);
  26.         header ("Location: system.php?mode=login");
  27. }
  28. if ($_GET['mode'] == "logout" and $check == false) {
  29.         header ("Location: system.php?mode=login");
  30. }
  31. ?>

Данные из формы входа отправляются ПОСТ запрсом. Но куки не создаются.
(Добавление)
Все, всем спасибо, вопрос решился сам по себе: при проверке подлинности пароль из БД хэшировался дважды.

(Отредактировано автором: 03 Февраля, 2012 - 10:42:17)

 
 Top
sKaa
Отправлено: 03 Февраля, 2012 - 10:41:52
Post Id



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


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


$post['username']..
Может я слепой но откуда берется эта переменная???
Ну а вообще куки могут не выставляться если на странице где-то выведет уже хотя бы один любой символ или отправлены заголовки.
 
 Top
Crate
Отправлено: 03 Февраля, 2012 - 10:44:15
Post Id



Посетитель


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


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




sKaa пишет:
$post['username']
Эта переменная подается в функцию через форму.

Вопрос решен, куки отправляются. Код в шапке изменил на рабочий
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB