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
Форумы портала PHP.SU :: Версия для печати :: Миллионная тема про простую авторизацию на php с использованием MySQL
Форумы портала PHP.SU » » Если скрипт не работает » Миллионная тема про простую авторизацию на php с использованием MySQL

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

1. ksk.wolk - 18 Июня, 2011 - 16:30:06 - перейти к сообщению
Ткните носом на ошибку в коде. Форма авторизации появляется, но сама авторизация не проходит.

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. ############################################
  3. include '../core/dbconfig.php';
  4. ############################################
  5. if(isset($_POST['auth_submit']))
  6. {
  7. $login = $_POST['login'];
  8. $password = $_POST['password'];
  9. $login=mysql_real_escape_string($login);
  10. $password=mysql_real_escape_string($password);
  11. $query = "SELECT id, login, password FROM waqs_admins WHERE login ='{$login}' AND password='{$password}' LIMIT 1";
  12. $sql = mysql_query($query) or die(mysql_error());
  13.  
  14. if (mysql_num_rows($sql) == 1)
  15. {
  16. include './astyle/login_good.tpl';
  17. }
  18. else
  19. {
  20. echo 'Неправильное имя или пароль';
  21. }
  22. }
  23. echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  24. <html xmlns="http://www.w3.org/1999/xhtml">
  25. <head>
  26. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
  27. <title>WAQS CMS | Админ-панель</title>
  28. <!-- Стили -->
  29. <link rel="stylesheet" media="screen" href="./astyle/css/reset.css" />
  30. <link rel="stylesheet" media="screen" href="./astyle/css/grids.css" />
  31. <link rel="stylesheet" media="screen" href="./astyle/css/style.css" />
  32. <link rel="stylesheet" media="screen" href="./astyle/css/jquery.uniform.css" />
  33. <link rel="stylesheet" media="screen" href="./astyle/css/forms.css" />
  34. <link rel="stylesheet" media="screen" href="./astyle/css/style1.css" />
  35. <!-- JavaScript -->
  36. <script src="./astyle/js/html5.js"></script>
  37. <script type="text/javascript" src="./astyle/js/selectivizr.js"></script>
  38. </head>
  39. <body class="login" style="overflow: hidden;">
  40.    <div class="login-box">
  41.         <section class="portlet login-box-top">
  42.            <header>
  43.                <h2 class="ac">Вход в админ панель</h2>
  44.            </header>
  45.            <section>
  46. <form id="form" name="avt" class="has-validation" action="index.php" method="post" style="margin-top: 30px">
  47. <p style="margin-bottom: 30px">
  48. <input type="text" id="login" class="full" value="" name="login" required="required" placeholder="Имя пользователя" /></p>
  49. <p style="margin-bottom: 30px">
  50. <input type="password" id="password" class="full" value="" name="password" required="required" placeholder="Пароль" /></p>
  51. <footer class="ac">
  52. <button class="button" type="submit" name="into" value="Вход">Войти</button>
  53. </footer>
  54. <br>
  55. </section>
  56. </section>
  57. </div>
  58. </form>
  59. </body>
  60. </html>';
  61.  
  62. ?>
2. PATCH - 18 Июня, 2011 - 16:51:42 - перейти к сообщению
авторизация без сессии?) мб по этому тебе кажется что он и не авторизовывается) ибо ты типо авторизовался, но данные по которым можно судить ты авторизовался или нет не где не хранятся)
3. Slavenin - 18 Июня, 2011 - 16:54:35 - перейти к сообщению
а что должно произойти при подключении ./astyle/login_good.tpl'; ?
4. ksk.wolk - 18 Июня, 2011 - 17:00:42 - перейти к сообщению
Цитата:
а что должно произойти при подключении ./astyle/login_good.tpl'; ?


Файл login_good.tpl просто выводит информацию об успешной авторизации:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?include './astyle/head.tpl';?>
  2. <body class="login" style="overflow: hidden;">
  3.     <div class="login-box">
  4.         <section class="portlet login-box-top">
  5.             <header>
  6.                 <h2 class="ac">Вход в админ панель</h2>
  7.             </header>
  8.             <section>
  9.                 <div class="message success"><center>Вы успешно вошли в систему!</center></div>
  10.                 <br>
  11.                                 <center><a href="main.php" class="button">Войти</a></center>
  12.             </section>
  13.         </section>
  14.         </div>
  15. </body>
  16. </html>
5. PATCH - 18 Июня, 2011 - 17:01:03 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. if(isset($_POST['auth_submit']))
  2. {
  3. $login = $_POST['login'];
  4. $password = $_POST['password'];
  5. $login=mysql_real_escape_string($login);
  6. $password=mysql_real_escape_string($password);
  7. $query = "SELECT id, login, password FROM waqs_admins WHERE login ='{$login}' AND password='{$password}' LIMIT 1";
  8. $sql = mysql_query($query) or die(mysql_error());
  9. $auth = mysql_fetch_array($sql)
  10.  
  11. @$_SESSION['user_id'] = $auth['id']
  12.  
  13. if(isset($_SESSION['user_id']))
  14. {
  15. include './astyle/login_good.tpl';
  16. }
  17. else
  18. {
  19. echo 'Неправильное имя или пароль';
  20. }
  21. }
6. Slavenin - 18 Июня, 2011 - 17:05:14 - перейти к сообщению
я обычно в подобных случаях делаю echo запроса и сую его в базу, если все хорошо, значит ищем дальше
7. ksk.wolk - 18 Июня, 2011 - 17:05:33 - перейти к сообщению
Цитата:
ну на скока я понел это типо
если пользователь существует то подключаем к этому файлу , файл с главной страницей админ панели (ссылки на под категории админ панели)


Да, именно. Но всё же хочу вернуться к главному вопросы, я так понял нужно назначить старт ссесии в верх сценария?

...Сейчас опробую предложенный вариант.
8. PATCH - 18 Июня, 2011 - 17:08:37 - перейти к сообщению
старт сессии лучше выкинуть в include '../core/dbconfig.php'; и подрубать к каждому файлы где нужна проверка авторизации
во избежание ошибок правильно напиши синтаксис include ('../core/dbconfig.php'); а то при проверки на ошибки стока те выдаст) error_repoting) чуть выше постом я изменил код
алгоритм такой
1) заносим в сессию id пользователя если он есть в бд
2) через логические выражение if(isset($_SESSION['user_id'])) {между скобок выводим все что нам надо в каждому сценарии }

и не забывай подрубать конфиг файл везде что бы сессия была в сценарии
9. ksk.wolk - 18 Июня, 2011 - 17:14:39 - перейти к сообщению
Тут такая ерунда, вылезает ошибка, даже форма входа не выводится:
Parse error: syntax error, unexpected '@' in W:\home\xxx\xxx\admin\index.php on line 15

Если убрать собаку с 15 строки, то вылезет соответственно ошибка:
Parse error: syntax error, unexpected T_VARIABLE in W:\home\xxx\xxx\admin\index.php on line 15

Сейчас сценарий выглядит так:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. ############################################
  3. include '../core/dbconfig.php';
  4. ############################################
  5. if(isset($_POST['auth_submit']))
  6. {
  7. $login = $_POST['login'];
  8. $password = $_POST['password'];
  9. $login=mysql_real_escape_string($login);
  10. $password=mysql_real_escape_string($password);
  11. $query = "SELECT id, login, password FROM waqs_admins WHERE login ='{$login}' AND password='{$password}' LIMIT 1";
  12. $sql = mysql_query($query) or die(mysql_error());
  13. $auth = mysql_fetch_array($sql)
  14.  
  15. $_SESSION['user_id'] = $auth['id']
  16.  
  17. if(isset($_SESSION['user_id']))
  18. {
  19. include './astyle/login_good.tpl';
  20. }
  21. else
  22. {
  23. echo 'Неправильное имя или пароль';
  24. }
  25. }
  26. echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  27. <html xmlns="http://www.w3.org/1999/xhtml">
  28. <head>
  29. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
  30. <title>WAQS CMS | Админ-панель</title>
  31. <!-- Стили -->
  32. <link rel="stylesheet" media="screen" href="./astyle/css/reset.css" />
  33. <link rel="stylesheet" media="screen" href="./astyle/css/grids.css" />
  34. <link rel="stylesheet" media="screen" href="./astyle/css/style.css" />
  35. <link rel="stylesheet" media="screen" href="./astyle/css/jquery.uniform.css" />
  36. <link rel="stylesheet" media="screen" href="./astyle/css/forms.css" />
  37. <link rel="stylesheet" media="screen" href="./astyle/css/style1.css" />
  38. <!-- JavaScript -->
  39. <script src="./astyle/js/html5.js"></script>
  40. <script type="text/javascript" src="./astyle/js/selectivizr.js"></script>
  41. </head>
  42. <body class="login" style="overflow: hidden;">
  43.    <div class="login-box">
  44.         <section class="portlet login-box-top">
  45.            <header>
  46.                <h2 class="ac">Вход в админ панель</h2>
  47.            </header>
  48.            <section>
  49. <form id="form" name="avt" class="has-validation" action="index.php" method="post" style="margin-top: 30px">
  50. <p style="margin-bottom: 30px">
  51. <input type="text" id="login" class="full" value="" name="login" required="required" placeholder="Имя пользователя" /></p>
  52. <p style="margin-bottom: 30px">
  53. <input type="password" id="password" class="full" value="" name="password" required="required" placeholder="Пароль" /></p>
  54. <footer class="ac">
  55. <button class="button" type="submit" name="into" value="Вход">Войти</button>
  56. </footer>
  57. <br>
  58. </section>
  59. </section>
  60. </div>
  61. </form>
  62. </body>
  63. </html>';
  64.  
  65. ?>
10. PATCH - 18 Июня, 2011 - 17:16:54 - перейти к сообщению
это элементарно ватсон) я на скорую руку писал и забыл про ;

PHP:
скопировать код в буфер обмена
  1. $auth = mysql_fetch_array($sql);
  2.  
  3. @$_SESSION['user_id'] = $auth['id'];
11. ksk.wolk - 18 Июня, 2011 - 17:23:40 - перейти к сообщению
Радость просто ";". Бывает. Ну прогресс, уже есть определенно - Появилась форма входа в админку, но вход по прежнему не выполняется, а значит я вернулся к той точке, от которой начал эту тему (шел только по другому). И в чём же сейчас ошибка? (сразу наперед отвечаю, что тестовый логин и пароль администратора есть (подходят под параметры сценария))
12. PATCH - 18 Июня, 2011 - 17:26:55 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. include './astyle/login_good.tpl'; - это форма админки да?

ваще на все сценарии и файлы админки надо делать проверку

PHP:
скопировать код в буфер обмена
  1.  
  2. include '../core/dbconfig.php';   // незабываем в каждому файле сценария подрубать в самом верху этот файл что бы сессия пахала
  3. if(isset($_SESSION['user_id']))
  4. {
  5. суем сюда весь код авторизованому админу
  6. }
  7. else
  8. {
  9. если админ не авторизован и на прямую пытается конектится то делаем тут действие
  10. }

(Добавление)
так стоп

ksk.wolk пишет:
просто ";". Бывает. Ну прогресс, уже есть определенно - Появилась форма входа в админку, но вход по прежнему не выполняется, а значит я вернулся к той точке, от которой начал эту тему (шел только по другому). И в чём же сейчас ошибка? (сразу наперед отвечаю, что тестовый логин и пароль администратора есть (подходят под параметры сценария))


форма для входа в админку?) эт как) она должна и так быть видна) а сценарий что мы пишем это и есть авторизация т.е данные что мы вводим в поля (входа в админку)
13. Slavenin - 18 Июня, 2011 - 17:40:30 - перейти к сообщению
я реализовывал авторизацию след образом

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
  3. header('Cache-Control: no-store, no-cache, must-revalidate');
  4. header('Cache-Control: post-check=0, pre-check=0', FALSE);
  5. header('Pragma: no-cache');
  6.  
  7. if(!$_SESSION['SESID'])
  8. {
  9.  
  10. if (!isset($_POST['go']))
  11.         {
  12.           echo "
  13.           <script language=\"javascript\">
  14.      <!-- Begin
  15.      alert(\"Добро пожаловать! Для продолжения работы необходима авторизация!\")
  16.      // End -->
  17.    </SCRIPT>
  18.  
  19. <table align= \"center\" height = \"100%\" width = \"100%\" border = \"0\">
  20. <tr valign = \"bottom\">
  21. <td align = \"center\">
  22. Для того чтобы воспользоваться услугами системы, пожалуйста, авторизуйтесь
  23. </td>
  24. </tr>
  25. <tr valign = \"top\">
  26. <td align = \"center\">
  27. <form method=\"POST\">
  28. <table align= \"center\" border = \"0\">
  29. <tr>
  30. <td>
  31. Login:
  32. </td>
  33. <td>
  34. <input type=text name=login>
  35. </td>
  36. </tr>
  37. <tr>
  38. <td>
  39. Password:
  40. </td>
  41. <td>
  42. <input type=password name=password>
  43. </td>
  44. </tr>
  45. <tr>
  46. <td colspan = \"2\" align = \"center\">
  47. <input type=submit name=go value=Войти>
  48. </td>
  49. </tr>
  50. <input type = \"hidden\"  name=refer value=" .$_SERVER['HTTP_REFERER'] .">
  51. </table>
  52. </form>
  53. </td>
  54. </tr>          
  55. </table>";
  56. }
  57. else
  58. {
  59. //подключаем файл с классом
  60. include "SOClassWork.php";
  61. //указываем имя подключаемого файла с данными БД
  62.     $nameBD = "BD1.php";
  63. //создаем объект класса
  64. $objOrder = new SOClassWork($nameBD);
  65.                
  66. //проверяем есть ли пользователь с таким login'ом и password'ом
  67.                
  68. $sqlUs = "SELECT u_login, u_password, u_group FROM t_users WHERE u_login ='".$_POST['login']."' AND u_password ='".(md5(trim($_POST['password'])))."'";
  69.                
  70.     $res = $objOrder->ConnectDb($sqlUs);
  71. $rowGroup = mysql_fetch_array($res, MYSQL_ASSOC);
  72.                
  73. if(mysql_num_rows($res)!=1)
  74. { //такого пользователя нет
  75. header("Refresh: 2; URL = login.php");
  76.  
  77. echo "Пользователя с такими данными не найдено, попробуйте еще раз!";
  78. }
  79. else
  80. {
  81. // регистрируем переменную login
  82. $_SESSION['login'] = $_POST['login'];
  83. $_SESSION['SESID'] = session_id();
  84. $_SESSION['group'] = $rowGroup['u_group'];
  85.  
  86. header("Refresh: 3; URL = main.php");
  87.  
  88. echo "
  89. <table align= \"center\" border = \"0\">
  90. <tr>
  91. <td>
  92. Авторизация прошла успешно! Через три секунды вы будете перемещены.
  93. </td>
  94. </tr>
  95. </table>";
  96. }              
  97.                                
  98. }
  99.  
  100. }
  101.  
  102. ?>

про вредность относительных путей уже писалось здесь http://forum.php.su/topic.php?fo...1&topic=7844 include щчень советую заменить на
PHP:
скопировать код в буфер обмена
  1. include_once
или
PHP:
скопировать код в буфер обмена
  1. require_once()
14. ksk.wolk - 18 Июня, 2011 - 17:41:13 - перейти к сообщению
Я уже писал, что login_good.tpl - это проста шаблон содержащий надпись об успешном входе.
(Добавление)
[quote=Slavenin][/quote] Для меня это пока слишком сложно, да и нечего мне прыгать с кода на код. Хочется понять ошибку, чтобы на одни и те же грабли в дальнейшем не наступать
15. Slavenin - 18 Июня, 2011 - 17:48:41 - перейти к сообщению
ну так делайте редирект на этот шаблон, регистрируйте в нем переменные сессии, начинайте сессию в каждом файле, проверяйте наличие авторизации и выводите тот или иной заголовок.

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

 

Powered by ExBB FM 1.0 RC1