За последние 24 часа нас посетили 171286 программистов и 3027 роботов. Сейчас ищут 1739 программистов ...

Как запретить вход на страницу до ввода логина и пароля???

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

  1. VovanSSS

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

    С нами с:
    3 янв 2010
    Сообщения:
    2
    Симпатии:
    0
    Добрый день у меня есть блок администратора на сайте но как сделать так чтоб страница блокировалась до ввода логина и пароля а только после проверке по базе выводилась страничка???
    есть 2 страницы авторизации и проверки вот они:


    Код (Text):
    1.  
    2. <?
    3. // Страница авторизации
    4.  
    5.  
    6. # Функция для генерации случайной строки
    7. function generateCode($length=6) {
    8.     $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";
    9.     $code = "";
    10.     $clen = strlen($chars) - 1;  
    11.     while (strlen($code) < $length) {
    12.             $code .= $chars[mt_rand(0,$clen)];  
    13.     }
    14.     return $code;
    15. }
    16.  
    17.  
    18. # Соединямся с БД
    19. include ("blocks/bd.php");
    20. if(isset($_POST['submit']))
    21. {
    22.     # Вытаскиваем из БД запись, у которой логин равняеться введенному
    23.     $query = mysql_query("SELECT user_id, user_password FROM users WHERE user_login='".mysql_real_escape_string($_POST['login'])."' LIMIT 1");
    24.     $data = mysql_fetch_assoc($query);
    25.      
    26.     # Соавниваем пароли
    27.     if($data['user_password'] === md5(md5($_POST['password'])))
    28.     {
    29.         # Генерируем случайное число и шифруем его
    30.         $hash = md5(generateCode(10));
    31.              
    32.         if(!@$_POST['not_attach_ip'])
    33.         {
    34.             # Если пользователя выбрал привязку к IP
    35.             # Переводим IP в строку
    36.             $insip = ", user_ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."')";
    37.         }
    38.          
    39.         # Записываем в БД новый хеш авторизации и IP
    40.         mysql_query("UPDATE users SET user_hash='".$hash."' ".$insip." WHERE user_id='".$data['user_id']."'");
    41.          
    42.         # Ставим куки
    43.         setcookie("id", $data['user_id'], time()+60*60*24*30);
    44.         setcookie("hash", $hash, time()+60*60*24*30);
    45.          
    46.         # Переадресовываем браузер на страницу проверки нашего скрипта
    47.         header("Location: check.php"); exit();
    48.     }
    49.     else
    50.     {
    51.         print "Вы ввели неправильный логин/пароль";
    52.     }
    53. }
    54. ?>
    55. <form method="POST">
    56. Логин <input name="login" type="text"><br>
    57. Пароль <input name="password" type="password"><br>
    58. Не прикреплять к IP(не безопасно) <input type="checkbox" name="not_attach_ip"><br>
    59. <input name="submit" type="submit" value="Войти">
    60. </form>
    и второе проверка
    Код (Text):
    1.  
    2. <?
    3. // Скрипт проверки
    4.  
    5. # Соединямся с БД
    6. include ("blocks/bd.php");
    7.  
    8. if (isset($_COOKIE['id']) and isset($_COOKIE['hash']))
    9. {    
    10.     $query = mysql_query("SELECT *,INET_NTOA(user_ip) FROM users WHERE user_id = '".intval($_COOKIE['id'])."' LIMIT 1");
    11.     $userdata = mysql_fetch_assoc($query);
    12.  
    13.     if(($userdata['user_hash'] !== $_COOKIE['hash']) or ($userdata['user_id'] !== $_COOKIE['id'])
    14.  or (($userdata['user_ip'] !== $_SERVER['REMOTE_ADDR'])  and ($userdata['user_ip'] !== "0")))
    15.     {
    16.         setcookie("id", "", time() - 3600*24*30*12, "/");
    17.         setcookie("hash", "", time() - 3600*24*30*12, "/");
    18.         print "Хм, что-то не получилось";
    19.     }
    20.     else
    21.     {
    22.         print "Привет, ".$userdata['user_login'].". Всё работает!";
    23.     }
    24. }
    25. else
    26. {
    27.     print "Включите куки";
    28. }
    29. ?>
    но они не блокируют страницу а просто выводится форма для ввода логина и парля что нужно жлбавить в этот код чтоб cnnhfybwf блокировалась или сначала появлялась просто форма на старанице а только потом после ввода переводилась на страницу. функция include стоит на всех страницах админки.
    Скрипты я скачал т.к. не чего не понямаю в куки и сессиях