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]   

> Описание: Помогите разобраться с этим скриптом
RayOfLight
Отправлено: 01 Февраля, 2009 - 21:44:38
Post Id



Новичок


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


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




Ввожу логин и пароль, но окно появляется снова и снова

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $db = mysql_connect("localhost", "<LOGIN>", "<PASSWORD>");
  4. mysql_select_db("<BASENAME>", $db);
  5.  
  6. if (!isset($_SERVER['PHP_AUTH_USER']))
  7.  
  8. {
  9.         Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
  10.         Header ("HTTP/1.0 401 Unauthorized");
  11.         exit();
  12. }
  13.  
  14. else {
  15.         if (!get_magic_quotes_gpc()) {
  16.                 $_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
  17.                 $_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
  18.         }
  19.  
  20.         $query = "SELECT password FROM admin WHERE login='".$_SERVER['PHP_AUTH_USER']."'";
  21.         $lst = @mysql_query($query);
  22.  
  23.         if (!$lst)
  24.         {
  25.             Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
  26.         Header ("HTTP/1.0 401 Unauthorized");
  27.         exit();
  28.         }
  29.  
  30.         if (mysql_num_rows($lst) == 0)
  31.         {
  32.            Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
  33.            Header ("HTTP/1.0 401 Unauthorized");
  34.            exit();
  35.         }
  36.  
  37.         $pass =  @mysql_fetch_array($lst);
  38.         if ($_SERVER['PHP_AUTH_PW']!= $pass['pass'])
  39.         {
  40.             Header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
  41.            Header ("HTTP/1.0 401 Unauthorized");
  42.            exit();
  43.         }
  44.  
  45.  
  46. }
  47.  
  48. ?>
  49.  
 
 Top
vitaliy_mad
Отправлено: 01 Февраля, 2009 - 21:55:13
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




вообще такая система авторизации очень глючная и недоделанная... не рекомендую ее использовать...
 
 Top
RayOfLight
Отправлено: 01 Февраля, 2009 - 21:59:29
Post Id



Новичок


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


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




vitaliy_mad

А какую лучше использовать?
 
 Top
vitaliy_mad
Отправлено: 01 Февраля, 2009 - 22:02:07
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




самописанную...
 
 Top
RayOfLight
Отправлено: 01 Февраля, 2009 - 22:02:31
Post Id



Новичок


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


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




Покажешь?
 
 Top
vitaliy_mad
Отправлено: 01 Февраля, 2009 - 22:06:35
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




Радость гм... это дело не пяти минут... суть ее такая: есть таблица в БД.
есть ХТМЛ с формой ввода лоина и пароля... после ввода проверяем на соответствие по БАЗЕ в случае упеха пишем сессию или куки... и далее проверяем сессию или соответственно куки... попробуй сам если не выйдет тогда уже будем думать

(Отредактировано автором: 01 Февраля, 2009 - 22:07:16)

 
 Top
RayOfLight
Отправлено: 01 Февраля, 2009 - 22:08:31
Post Id



Новичок


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


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




vitaliy_mad
Можешь выложить код я просто подправлю под свою БД! ПАЖАЛСТА! Огорчение

Я еще не очень хорошо в пхп шарю (

(Отредактировано автором: 01 Февраля, 2009 - 22:09:07)

 
 Top
vitaliy_mad
Отправлено: 01 Февраля, 2009 - 22:13:10
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




ща состряпаю че нить...
(Добавление)
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $my=mysql_connect(...);//соединяемся с БД
  3. $auth=false; // флаг неавторизированного пользователя
  4. if (isset($_COOKIE['sess'])) // проверяем установлена ли кука пользователя
  5. { // если да то ищем его в базе
  6.   $cook=$_COOKIE['sess'];
  7.   $q="SELECT login FROM users WHERE sess='$cook';";
  8.   $r=mysql_query($q);
  9.   if (mysql_num_rows($r)==1)
  10.   {
  11.      $login=mysql_result($r,0,'login'); // нашли вв переменную заносим логин
  12.      $auth=true; // флаг авторизации в true
  13.   }
  14.   else
  15.   { пользователь не найден
  16.     $auth=false; // флаг сбрасываем
  17.     setcookie("sess","",time()-3600); // ина всякий случай куки
  18.   }
  19. }
  20.  
  21. if ($_POST['act']=='login')
  22. { // польователь нажал вход
  23.  $login=preg_replace("/'/","",$_POST['login']); // убираем одинарные авычки для безопасности
  24.  $pass=preg_replace("/'/","",$_POST['passwd']);
  25.  $q="SELECT * FROM users WHERE login='$login' AND passwd='$passwd';";
  26.  $r=mysql_query($q); // запрос на пользователя и пароль в базу
  27.  if (mysql_num_rows==1)
  28.  {// авторизация прошла успешно, пользователь в базе есть
  29.    $session=rand(1000000,9999999); // генерируем случайное число
  30.    setcookie("sess",$session,time()+604800); // пишем его в куки
  31.    $auth=true; // авторизация пройдена
  32.    $q="UPDATE users SET sess='$session' WHERE login='$login';"; // пишем в базу переданную куку для последующих проврок
  33.    $r=mysql_query($q);
  34.  }
  35. }
  36. if($_POST['act']=='logout')
  37. { //выход
  38.     setcookie("sess","",time()-3600); // убиваем куки
  39.     $q="UPDATE users SET sess='0' WHERE login='$login';";
  40.     $r=mysql_query($q); // и в базе тоже
  41.     $auth=false; // авторизация нне пройдена
  42. }
  43.  
  44. if (!$auth)
  45. { // если пользователь не авторизован выводим формц авторизации
  46.  echo '
  47. <form method=post>
  48. <input type=hidden name=act value=login>
  49. Логин:<input type=text name=login><br>
  50. пароль: <input type=password name=passwd><br>
  51. <input type=submit>
  52. </form>';
  53.  
  54. }
  55. else
  56. { // иначе форму выхода
  57.  echo '
  58. <form method=post>
  59. <input type=hidden name=act value=logout>
  60. <input type=submit value='Выход'>
  61. </form>';
  62.  
  63. }
  64. ?>

(Добавление)
что то вроде этого... могут быть ошибки... не проверял... и на скорую руку...

(Отредактировано автором: 01 Февраля, 2009 - 22:31:42)

 
 Top
Agassi
Отправлено: 01 Февраля, 2009 - 22:56:56
Post Id



Частый гость


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. define("FROM_LOGINOUT", TRUE);
  4.  
  5. require_once ("config.php");
  6. require_once ("db.php");
  7.  
  8. $EnterMessage ="";
  9.  
  10.       function quer($query)
  11.         {
  12.  
  13.  $result=mysql_query($query);
  14.            if($row = mysql_fetch_object($result))
  15.                  {
  16.  
  17.                                 $_SESSION['login'] = $row->Name;
  18.                                 $_SESSION['pass'] =  $row->Pass;
  19.  
  20.                 mysql_free_result($result);
  21.  
  22.                 }
  23.               else
  24.               { $Message = '<p align="center">Ошибка при вводе логина и пароля</p>';
  25.           echo  $Message;
  26.           }
  27.  
  28.          }
  29.    function _EntryForm($mess)
  30.    {
  31.  
  32.         echo "<table align='center'><form name='entry' action='' method='post'><tr>     <td align='right'>      логин:  </td>   <td align='left'>       <input name='login' type='text' value=''>       </td></tr><tr>  <td align='right'>      пароль: </td>   <td align='left'>       <input name='password' type='password' value=''>        </td></tr><tr>  <td colspan='2' align='center'> <input type='submit' value='вход'  id='submit'> </td></tr></table></form>";
  33.  
  34. }
  35.      if ( isset($_POST['login']) && isset($_POST['password']) )
  36.  {
  37.                       $_POST['login']=htmlspecialchars($_POST['login']);
  38.                       $_POST['login']=preg_replace("/","", $_POST['login']);
  39.                    
  40.                       $_POST['password']=htmlspecialchars($_POST['password']);
  41.                       $_POST['password']=preg_replace("/","", $_POST['password']);
  42.                      
  43. $EnterMessage=quer("select Name,Pass from user where Name like('".$_POST['login']."') and Pass like('".$_POST['password']."');");
  44.  
  45.  }
  46.  
  47.  
  48. if ((!isset($_SESSION['login'])) && (!isset($_SESSION['pass'])) ) {
  49.         _EntryForm($EnterMessage);
  50.         session_unset();
  51.         session_destroy();
  52.         die();
  53. }
  54. else
  55. {
  56. include "ading.php";
  57. }
  58.  
  59. ?>
  60.  
  61.  
  62.  
  63.  
  64.  
  65. ?>
  66.  
  67.  
  68.  
  69.  
  70.  







config.php

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if(!defined("FROM_LOGINOUT")) {
  3.         header("HTTP/1.0 404 Not Found");
  4.         die;
  5. }
  6.  
  7. $dbhost = "localhost"; // database host
  8. $dbuser = "***"; // your database username
  9. $dbpass = "***; // your databse password
  10. $dbname = "******"; // name of database
  11.  
  12. ?>



db.php

PHP:
скопировать код в буфер обмена
  1. <?
  2. if(!defined("FROM_LOGINOUT")) {
  3.         header("HTTP/1.0 404 Not Found");
  4.         die;
  5. }
  6.  
  7.  
  8. @mysql_connect($dbhost,$dbuser,$dbpass) or die('Database connection error');
  9. @mysql_select_db($dbname) or die('Database error!');
  10. @mysql_query ("set names=cp1251");
  11. ?>





ПОпадаем сюда-после правильно ввода логина и пароля
(Добавление)
НАсчёт html сборку-это уже у каждоого свой

(Отредактировано автором: 01 Февраля, 2009 - 23:01:48)

 
 Top
RayOfLight
Отправлено: 02 Февраля, 2009 - 17:20:46
Post Id



Новичок


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


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




Да мне надо самый простейший скриптик который бы проверял пароль, и в случае совпадения писал бы сессию...
 
 Top
Agassi
Отправлено: 02 Февраля, 2009 - 17:41:27
Post Id



Частый гость


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


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




А так сложно,взять своё из большого кода))
Не понял
 
 Top
Roler
Отправлено: 02 Февраля, 2009 - 18:43:03
Post Id



Посетитель


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


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




RayOfLight
Это элементарно)

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $user = 'admin';
  4. $pass = 'qwerty';
  5. if(isset($_POST['username']) && isset($_POST['passw']) && $_POST['username']==$user && $_POST['passw']==$pass)
  6. {
  7.       $_SESSION['user'] = $user;
  8.       $_SESSION['passw'] = $_POST['passw']
  9.       // Ну а дальше, выводим например для юзера инфу
  10. }
  11. else
  12. {
  13. // Непохож ты на юзера. Пшёл отсюдова)
  14. }
  15. ?>
  16.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB