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 с использованием MySQL [2]

 PHP.SU

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


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

> Без описания
ksk.wolk
Отправлено: 18 Июня, 2011 - 17:57:10
Post Id



Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2011  


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




Простите, но зачем же в этот файл вставлять проверку авторизации?

login_good.tpl
CODE (html):
скопировать код в буфер обмена
  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>


Да и даже если дело в том, что я не включил в нём авторизацию не должно сказаться на работоспособности основного сценария. А выглядит сейчас все так:

Появляется форма входа в админ панель, вводим логин и пароль, нажимаем вход - страничка просто обновляется и заново просит ввести логин и пароль.

(Отредактировано автором: 18 Июня, 2011 - 17:57:32)

 
 Top
PATCH
Отправлено: 18 Июня, 2011 - 17:57:54
Post Id



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


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


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




core.php
PHP:
скопировать код в буфер обмена
  1.         $host = 'localhost' ;
  2.         $user_db = 'root';
  3.         $pass_db = '';
  4.        
  5.         @$db = mysql_connect ($host,$user_db,$pass_db)
  6.         or die ("<p align='center' style='font-size:30px; color:FF0000' style='color:red;'> отсутствует соединение с Database проверьте правильность настроек");
  7.         @$db_main = mysql_select_db("wsw");


CODE (html):
скопировать код в буфер обмена
  1. <form action='index.php' method='post'>
  2. <table cellpadding='0' cellspacing='0'>
  3.   <tr>
  4.     <td ><a class='auth_login_n'>Логин:</a></td>
  5.     <td class='auth_login'><input type='text' name='login' size='10' maxlength='10' /></td>
  6.   </tr>
  7.   <tr>
  8.     <td ><a class='auth_pass_n'>Пароль:</a></td>
  9.     <td class='auth_pass'><input type='password' name='pass' size='10' maxlength='10' /></td>
  10.   </tr>
  11.     <tr>
  12.     <td><input name auth_submit class='auth_submit' type='submit' value='vxod'></td>
  13.   </tr>
  14. </table>
  15. </form>


авторизационая форма php
PHP:
скопировать код в буфер обмена
  1.  
  2. include '../core/dbconfig.php';
  3. if(isset($_POST['auth_submit']))
  4. {
  5. $login = $_POST['login'];
  6. $password = $_POST['password'];
  7. $login=mysql_real_escape_string($login);
  8. $password=mysql_real_escape_string($password);
  9. $query = "SELECT id, login, password FROM waqs_admins WHERE login ='{$login}' AND password='{$password}' LIMIT 1";
  10. $sql = mysql_query($query) or die(mysql_error());
  11. $auth = mysql_fetch_array($sql);
  12.  
  13. $_SESSION['user_id'] = $auth['id'];
  14.  
  15. if(isset($_SESSION['user_id']))
  16. {
  17. include 'admin.php';
  18. }
  19. else
  20. {
  21. echo 'Неправильное имя или пароль';
  22. }


главная страница админ панели

PHP:
скопировать код в буфер обмена
  1. include '../core/dbconfig.php';
  2. if(isset($_SESSION['user_id']))
  3. {
  4. include ("template/admin.tpl"); ;
  5. }
  6. else
  7. {
  8. echo 'Неправильное имя или пароль';
  9. }


admin.tpl

(любой html/php код допустим ссылку на под категории админ панели или добавление поста и т.д ) такую проверку как в (главная страница админ панели) делать с каждым файлам куда запрещен доступ не авторизованым пользователям
(Добавление)
а кидает тебя назад на index.php потому что скорее всего в main.php у тебя идет переадресация на index.php , как я те помогу не видя код main.php)

(Отредактировано автором: 18 Июня, 2011 - 18:00:39)

 
 Top
ksk.wolk
Отправлено: 18 Июня, 2011 - 18:09:59
Post Id



Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2011  


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




PATCH пишет:
а кидает тебя назад на index.php потому что скорее всего в main.php у тебя идет переадресация на index.php , как я те помогу не видя код main.php)


Содержимое main.php не может кидать на index, да и после успешной авторизации должна сначала появиться информация из файла login_good.tpl через которую уже на main и попадает потенциальный администратор

P.S. Сейчас сценарий входа (тобеж index.php) выглядит так:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. ############################################
  3. include_once $_SERVER['DOCUMENT_ROOT'].'/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_once './astyle/login_good.tpl';
  20. }
  21. else
  22. {
  23. echo 'Неправильное имя или пароль';
  24. }
  25. }
  26. include_once './astyle/head.tpl';
  27. echo '<body class="login" style="overflow: hidden;">
  28.    <div class="login-box">
  29.         <section class="portlet login-box-top">
  30.            <header>
  31.                <h2 class="ac">Вход в админ панель</h2>
  32.            </header>
  33.            <section>
  34. <form id="form" name="avt" class="has-validation" action="index.php" method="post" style="margin-top: 30px">
  35. <p style="margin-bottom: 30px">
  36. <input type="text" id="login" class="full" value="" name="login" required="required" placeholder="Имя пользователя" /></p>
  37. <p style="margin-bottom: 30px">
  38. <input type="password" id="password" class="full" value="" name="password" required="required" placeholder="Пароль" /></p>
  39. <footer class="ac">
  40. <button class="button" type="submit" name="into" value="Вход">Войти</button>
  41. </footer>
  42. <br>
  43. </section>
  44. </section>
  45. </div>
  46. </form>
  47. </body>
  48. </html>';
  49.  
  50. ?>


На всякий случай, вот dump таблицы waqs_admins:

CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE IF NOT EXISTS `waqs_admins` (
  2.   `id` int(15) NOT NULL AUTO_INCREMENT,
  3.   `login` varchar(255) NOT NULL,
  4.   `password` varchar(255) NOT NULL,
  5.   PRIMARY KEY (`id`)
  6. ) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;
  7.  
  8. --
  9. -- Dumping data for table `waqs_admins`
  10. --
  11.  
  12. INSERT INTO `waqs_admins` (`id`, `login`, `password`) VALUES
  13. (1, 'admin', 'admin');

(Отредактировано автором: 18 Июня, 2011 - 18:11:59)

 
 Top
Slavenin
Отправлено: 18 Июня, 2011 - 18:10:21
Post Id



Посетитель


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


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




проверку сессии стоит делать на страницах сайта где есть разница между авторизованным пользователем и не авторизованным.

всю авторизацию желательно вынести в отдельный файлик, и уже с него редиректить на нужную страницу или страницу откуда пользователь пришел
 
 Top
ksk.wolk
Отправлено: 18 Июня, 2011 - 18:29:57
Post Id



Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2011  


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




Поэтому я даже и не знаю, вроде бы благодаря вам сценарий теперь должен работать, но увы.
 
 Top
Slavenin
Отправлено: 18 Июня, 2011 - 18:35:05
Post Id



Посетитель


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


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




да ё-мое, форма авторизации всегда будет вылазить, так как она не включена в условный оператор , а просто написана в конце файла...
 
 Top
ksk.wolk
Отправлено: 18 Июня, 2011 - 18:56:14
Post Id



Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2011  


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




В таком случае сценарий выглядеть будет так (Вот только ошибка никуда не делась)

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. ############################################
  3. include_once $_SERVER['DOCUMENT_ROOT'].'/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. $_SESSION['user_id'] = $auth['id'];
  15. }
  16. include_once './astyle/head.tpl';
  17. echo '<body class="login" style="overflow: hidden;">
  18.    <div class="login-box">
  19.         <section class="portlet login-box-top">
  20.            <header>
  21.                <h2 class="ac">Вход в админ панель</h2>
  22.            </header>
  23.            <section>
  24. <form id="form" name="avt" class="has-validation" action="index.php" method="post" style="margin-top: 30px">
  25. <p style="margin-bottom: 30px">
  26. <input type="text" id="login" class="full" value="" name="login" required="required" placeholder="Имя пользователя" /></p>
  27. <p style="margin-bottom: 30px">
  28. <input type="password" id="password" class="full" value="" name="password" required="required" placeholder="Пароль" /></p>
  29. <footer class="ac">
  30. <button class="button" type="submit" name="into" value="Вход">Войти</button>
  31. </footer>
  32. <br>
  33. </section>
  34. </section>
  35. </div>
  36. </form>
  37. </body>
  38. </html>';  
  39. if(isset($_SESSION['user_id']))
  40. {
  41. include_once './astyle/login_good.tpl';
  42. }
  43. else
  44. {
  45. echo 'Неправильное имя или пароль';
  46. }
  47. ?>


Если форму ставить в другое место, то либо вместо формы входа будет белая страница или сообщение "Неправильное имя или пароль"
 
 Top
Slavenin
Отправлено: 18 Июня, 2011 - 19:26:45
Post Id



Посетитель


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


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




попробуй так:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. ############################################
  3. include_once $_SERVER['DOCUMENT_ROOT'].'/core/dbconfig.php';
  4. ############################################
  5. if(!isset($_SESSION['user_id']))
  6. {
  7.         if(isset($_POST['auth_submit']))
  8.         {
  9.                 $login = $_POST['login'];
  10.                 $password = $_POST['password'];
  11.                 $login=mysql_real_escape_string($login);
  12.                 $password=mysql_real_escape_string($password);
  13.                 $query = "SELECT id, login, password FROM waqs_admins WHERE login ='{$login}' AND password='{$password}' LIMIT 1";
  14.                 $sql = mysql_query($query) or die(mysql_error());
  15.        
  16.                 if(mysql_num_rows($sql) > 0)
  17.                 {
  18.                         $auth = mysql_fetch_array($sql);
  19.                         $_SESSION['user_id'] = $auth['id'];
  20.                 }
  21.                 else
  22.                 {
  23.                         header("Refresh: 3; URL = main.php");
  24.                         echo 'неверный логин или пароль';
  25.                 }
  26.                
  27.         }
  28.         else
  29.         {
  30.                 include_once $_SERVER['DOCUMENT_ROOT'].'/astyle/head.tpl';
  31.                 echo '
  32.                 <html>
  33.                 <body class="login" style="overflow: hidden;">
  34.    <div class="login-box">
  35.        <section class="portlet login-box-top">
  36.            <header>
  37.                <h2 class="ac">Вход в админ панель</h2>
  38.            </header>
  39.            <section>
  40.                 <form id="form" name="avt" class="has-validation" action="index.php" method="post" style="margin-top: 30px">
  41.                 <p style="margin-bottom: 30px">
  42.                 <input type="text" id="login" class="full" value="" name="login" required="required" placeholder="Имя пользователя" /></p>
  43.                 <p style="margin-bottom: 30px">
  44.                 <input type="password" id="password" class="full" value="" name="password" required="required" placeholder="Пароль" /></p>
  45.                 <footer class="ac">
  46.                 <button class="button" type="submit" name="into" value="Вход">Войти</button>
  47.                 </footer>
  48.                 <br>
  49.                 </section>
  50.                 </section>
  51.                 </div>
  52.                 </form>
  53.                 </body>
  54.                 </html>';  
  55.         }
  56. }
  57. else
  58. {
  59. include_once './astyle/login_good.tpl';
  60. }
  61.  
  62. ?>
 
 Top
ksk.wolk
Отправлено: 18 Июня, 2011 - 19:47:57
Post Id



Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2011  


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




Ну слава богу, всё теперь работает. Правда есть небольшой нюанс, после авторизации сначала белая страница появляется, только после её обновления текст с успешным входом.
 
 Top
Slavenin
Отправлено: 18 Июня, 2011 - 20:25:06
Post Id



Посетитель


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


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




ну да, я забыл добавить
после
PHP:
скопировать код в буфер обмена
  1. $_SESSION['user_id'] = $auth['id'];
 
 Top
ksk.wolk
Отправлено: 18 Июня, 2011 - 23:06:05
Post Id



Новичок


Покинул форум
Сообщений всего: 33
Дата рег-ции: Июнь 2011  


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




Огромное всем спасибо, тему можно закрывать.
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Если скрипт не работает »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB