За последние 24 часа нас посетили 17745 программистов и 1645 роботов. Сейчас ищут 997 программистов ...

Форма запроса логин-пароля.

Тема в разделе "PHP для новичков", создана пользователем KiFF86, 4 май 2010.

  1. KiFF86

    KiFF86 Активный пользователь

    С нами с:
    2 дек 2009
    Сообщения:
    18
    Симпатии:
    0
    Здравствуйте.
    Возникла вот такая проблема:
    Создал простую формочку
    где беру логин и пароль (метод post)
    затем передаю это в файл index.php в котором подключен lock.php.
    в файл lock.php вставлен скрипт:
    PHP:
    1. <?php
    2. include("blocks/bd.php");
    3. if (isset($_POST['user'])) {$_SERVER['PHP_AUTH_USER'] = $_POST['user']; unset($_POST['user']);}
    4. if (isset($_POST['pass'])) {$_SERVER['PHP_AUTH_PW'] = $_POST['pass'];   unset($_POST['pass']);}                                                              
    5. if (!isset($_SERVER['PHP_AUTH_USER']))
    6.  
    7. {
    8.         header("Location: ../login_form.php");
    9. }
    10.  
    11. else {
    12.         if (!get_magic_quotes_gpc()) {
    13.                 $_SERVER['PHP_AUTH_USER'] = mysql_escape_string($_SERVER['PHP_AUTH_USER']);
    14.                 $_SERVER['PHP_AUTH_PW'] = mysql_escape_string($_SERVER['PHP_AUTH_PW']);
    15.         }
    16.  
    17.         $query = "SELECT pass FROM userlist WHERE user='".$_SERVER['PHP_AUTH_USER']."'";
    18.         $lst = @mysql_query($query);
    19.  
    20.         if (!$lst)
    21.         {
    22.             header("Location: ../login_form.php");
    23.         }
    24.  
    25.         if (mysql_num_rows($lst) == 0)
    26.         {
    27.            header("Location: ../login_form.php");
    28.         }
    29.  
    30.         $pass =  @mysql_fetch_array($lst);
    31.         if ($_SERVER['PHP_AUTH_PW']!= $pass['pass'])
    32.         {
    33.             header("Location: ../login_form.php");
    34.         }
    35.  
    36.  
    37. }
    38.  
    39.  
    40.  
    41.  
    42. ?>
    Введя нужные пароль и логин, я прохожу спокойно на страничку index.php
    Однако, файл lock.php подключен у меня ко всем файлам из папки admin (в том числе и index.php)
    Беда в том, что после перехода по любой ссылки в index.php у меня идет переход опять на форму запроса пароль/логин.
    До этого у меня стоял lock.php с вылетающим окном где нужно было вписать логин и пароль, после чего он запоминал эту связку и уже больше не спрашивал ее..

    Чтобы понятнее:
    Есть папка admin, где лежат странички php.
    Нужно через форму проверить есть ли логин/пароль в базе и, если есть, допустить к скрытому разделу. И между файлами скрытого раздела перемещаться свободно. Однако, если попробовать набрать в адресной строке любую из страничек в папке admin, то выпадала бы форма запроса.
     
  2. KiFF86

    KiFF86 Активный пользователь

    С нами с:
    2 дек 2009
    Сообщения:
    18
    Симпатии:
    0
    Нашел статью про сессии.. В наше время ими пользуются еще?
     
  3. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    KiFF86
    ))) Нет, конечно, ты что. Все юзают твой код)
     
  4. KiFF86

    KiFF86 Активный пользователь

    С нами с:
    2 дек 2009
    Сообщения:
    18
    Симпатии:
    0
    Апельсин
    Хахахаха)) Мой код не рабочий! ((
    Ну я так понял что все это работает через сессии.. Других вариантов нет..
     
  5. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    KiFF86
    глобальный массив $_SERVER не для сохранения пользовательских данных. Его содержимое перезаписывается с каждым новым обращением к странице.

    а что-то глобально изменилось? Ещё на куках можно авторизацию делать
     
  6. KiFF86

    KiFF86 Активный пользователь

    С нами с:
    2 дек 2009
    Сообщения:
    18
    Симпатии:
    0
    Luge
    Спасибо вам за нормальный ответ!
    Я просто и пишу в ветку для новичков. Ведь все тоже когда-то начинали с нуля.
    Не подскажите пример создания авторизации на сессиях? я уже нашел парочку примеров... но там идет пример со скрытой ссылкой..
    А мне нужно, чтобы человек попадал в скрытый раздел сайта, то есть шло перенаправление. Реализацию я уже себе примерно представляю. Однако, не понимаю, как сделать так, чтобы можно было свободно перемещаться по страницам скрытого раздела?
    Принцип моей реализации такой:
    для начала пользователь попадает на страницу с формой ввода пароль/логин (loginform.php)
    далее есть обработчик - chek.php который проверяет, есть такая связка в бд. (в нем-то и думаю вставить сессию)..
    после ввода правильной связки user попадает в скрытый раздел. (admin.php)
    в этмом разделе также есть другие страницы - edit.php, del.php, и т.п.
    вопрос: что нужно вставить в эти странички, чтобы пройдя страничку с формой, пользователь запоминался. А то у меня он опять перенаправляется на страницу loginform.php
     
  7. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
  8. KiFF86

    KiFF86 Активный пользователь

    С нами с:
    2 дек 2009
    Сообщения:
    18
    Симпатии:
    0
    спасибо, ушел изучать.