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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Проблема при авторизации в админку.
Maxi
Отправлено: 18 Октября, 2010 - 20:26:16
Post Id



Гость


Покинул форум
Сообщений всего: 107
Дата рег-ции: Июнь 2010  
Откуда: Kharkov, Ukraine


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




Всем привет.

У меня проблемка возникла... Я написал админку, авторизация основана на записи Cookies, и проверке логина и пароля. В случает отсутствия кукис или несовпадения логина | пароля срабатывает редирект на повторный вход. Кукисы в браузер пишутся, логин и пароль совпадают, но редирект срабатывает всёравно...

Причем на Дэнвере такой проблемы не возникает...только на хостинге.

Подскажите в чём беда... :\
 
 Top
Саныч Модератор
Отправлено: 18 Октября, 2010 - 20:27:16
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




где код? Хм


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Maxi
Отправлено: 18 Октября, 2010 - 20:32:55
Post Id



Гость


Покинул форум
Сообщений всего: 107
Дата рег-ции: Июнь 2010  
Откуда: Kharkov, Ukraine


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




Саныч пишет:
где код? Хм


Воть.

Login_form.php

CODE (html):
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3.         <link rel="stylesheet" type="text/css" href="style.css" />
  4.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5.         <title>authorization</title>
  6.         <style type="text/css">
  7.         BODY {
  8.     background-color: black;
  9.         }
  10.         b{
  11.         color:black;
  12.         }
  13.         </style>
  14. </head>
  15. <body>
  16.   <form method=POST action="login_prov.php">
  17.         <div id="enter">
  18.                 <div id="centerenter">
  19.                 </br>
  20.                 <b>логин:</b> </br>
  21.                 <input type="text" name="log" value=""></br>
  22.                 <b>пароль:</b></br>    
  23.                 <input type="password" name="passw"></br>
  24.                 <div id="button"><input type="submit" value="ok"></div>
  25.                 </div>
  26.         </div>
  27.   </form>
  28. </body>
  29. </html>


login_prov.php

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.         $cookie_set=setcookie("user",$_POST['log']);
  3. ?>
  4. <html>
  5. <head>
  6.         login
  7.         <link rel="stylesheet" type="text/css" href="style.css" />
  8.         <title>Site-card CMS</title>
  9. </head>
  10. <body>
  11.   <?PHP
  12.         include"if_not.php";
  13.     $login_p=$_POST["log"];
  14.     $passw_p=$_POST["passw"];
  15.         if (!$login_p || !$passw_p)
  16.                 print "Ошибка ввода!";
  17.         else
  18.                 include"db_connect.php";
  19.                 @$query="SELECT 1 FROM users WHERE login='$login_p' AND password='$passw_p'";
  20.                 @$result=mysql_query($query);
  21.                 @$row=mysql_fetch_row($result);
  22.                 $prov=$row[0];
  23.         if ($prov<>1)
  24.                 print"Логин и пароль не совпадают! Повторите ввод!";
  25.         else
  26.                 {
  27.                 $prov=1;
  28.                 mysql_close($my_conn);
  29.                 print "<script> setTimeout('parent.location=\"admin.php\";', 10); </script>";
  30.                 }
  31.   ?>
  32.   </br>
  33.   <a href="login_form.php">назад</a>
  34. </body>
  35. </html>


if_not.php

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.         if (!$_COOKIE['user'])
  3.         {
  4.                 print "<script> setTimeout('window.location=\"login_form.php\";'); </script>";
  5.         }      
  6.         else
  7.                 print "<script> setTimeout('wondow.location=\"admin.php\";'); </script>";
  8. ?>


Отредактировано модератором: Uchkuma, 18 Октября, 2010 - 20:50:43
Ну код же =(
 
 Top
Саныч Модератор
Отправлено: 18 Октября, 2010 - 20:44:30
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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






з.ы. а вобще код мягко говоря "плохой" А?!


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Maxi
Отправлено: 18 Октября, 2010 - 20:48:18
Post Id



Гость


Покинул форум
Сообщений всего: 107
Дата рег-ции: Июнь 2010  
Откуда: Kharkov, Ukraine


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




Я только начал изучать PHP. Не больше месяца пишу.
 
 Top
Uchkuma
Отправлено: 18 Октября, 2010 - 20:57:44
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




Уж мульён раз обсуждали авторизацию на куках, все одно, все прут и прут... =(
Покажите, где этому учат. Пора искоренять уже Улыбка

Что за объект wondow Однако

Редирект делается с помощью header. Почитайте.
 
 Top
Саныч Модератор
Отправлено: 18 Октября, 2010 - 20:58:23
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




ну тогда несколько подсказок на будущее:
1) чтобы проверить на существование нужно использовать isset(). Если вы используете !$login_p, то это равняеется $login_p != true, а это разные вещи и таких ошибок в вашем коде много.
2) используйте функцию mysql_real_escape_string() для всех данных которые идут в sql запросах
3) уберите из кода собак Улыбка пропишите в самом начале файла error_reporting(0);
4) нафига использовать js для редирректа, если есть header() ?

(Отредактировано автором: 18 Октября, 2010 - 20:59:32)



-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Maxi
Отправлено: 18 Октября, 2010 - 21:17:37
Post Id



Гость


Покинул форум
Сообщений всего: 107
Дата рег-ции: Июнь 2010  
Откуда: Kharkov, Ukraine


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




Спасибо) Буду исправлять I'm sorry!
(Добавление)
Хмм...Дал знакомому логин и пароль от админки, он нормально зашёл. Может эта проблема быть связанной с фаирволом, или антивирусом?
 
 Top
movEAX
Отправлено: 18 Октября, 2010 - 21:29:42
Post Id



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


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


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




Саныч пишет:
4) нафига использовать js для редирректа, если есть header() ?

еще exit() не помешает после header)


-----
армия.. самое убогое место
 
 Top
OrmaJever Модератор
Отправлено: 18 Октября, 2010 - 21:52:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




я ещё не заметил фигурных скобок впервом else.
в else ябы написал так
PHP:
скопировать код в буфер обмена
  1.  
  2. ...
  3. $login = mysql_real_escape_string($login_p);
  4.       else
  5.                 include"db_connect.php";
  6.                 $result=mysql_query("SELECT pass FROM users WHERE login='$login'");
  7.                 $row=mysql_fetch_array($result);
  8.  
  9.                 if ( $row['pass'] == $_POST['passw'])
  10.                       echo 'Вы зашли';
  11.                 else
  12.                       echo 'логин или пароль не верный ;)';
  13. ...
  14.  

(Отредактировано автором: 18 Октября, 2010 - 21:53:40)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Uchkuma
Отправлено: 18 Октября, 2010 - 21:57:25
Post Id



Участник


Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010  
Откуда: Киров


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




С такой авторизацией без всякого логина и пароля можно в админку зайти )))
Maxi пишет:
Спасибо) Буду исправлять
Тут нечего исправлять. В корне переделывать надо.
 
 Top
Maxi
Отправлено: 18 Октября, 2010 - 22:07:42
Post Id



Гость


Покинул форум
Сообщений всего: 107
Дата рег-ции: Июнь 2010  
Откуда: Kharkov, Ukraine


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




Uchkuma пишет:
С такой авторизацией без всякого логина и пароля можно в админку зайти )))
Maxi пишет:
Спасибо) Буду исправлять
Тут нечего исправлять. В корне переделывать надо.


Например "в корне"?
 
 Top
Саныч Модератор
Отправлено: 18 Октября, 2010 - 22:11:24
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Maxi пишет:
Например "в корне"?

в корне значит создаете новый php файл и начинаете писать


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Maxi
Отправлено: 18 Октября, 2010 - 22:16:02
Post Id



Гость


Покинул форум
Сообщений всего: 107
Дата рег-ции: Июнь 2010  
Откуда: Kharkov, Ukraine


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




Я как бы ожидал увидеть совет, а не агрессию с вашей стороны.
 
 Top
Саныч Модератор
Отправлено: 18 Октября, 2010 - 22:21:18
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




Maxi пишет:
Я как бы ожидал увидеть совет, а не агрессию с вашей стороны.

Какая ж это агрессия? Не понял Это и есть самый дельный совет, оптимальное решение...


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB