За последние 24 часа нас посетили 87493 программиста и 4641 робот. Сейчас ищут 2022 программиста ...

Кто может помочь с авторизацией

Тема в разделе "PHP для новичков", создана пользователем MNW241996, 2 авг 2018.

  1. MNW241996

    MNW241996 Новичок

    С нами с:
    2 авг 2018
    Сообщения:
    4
    Симпатии:
    0
    Есть небольшой скрипт обычной авторизации на 3 файлах

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


    Код (Text):
    1. <?php
    2. # подключаем конфиг
    3. include 'conf.php';
    4.  
    5. # проверка авторизации
    6. if (isset($_COOKIE['id']) and isset($_COOKIE['hash']))
    7. {  
    8.     $userdata = mysql_fetch_assoc(mysql_query("SELECT * FROM users WHERE users_id = '".intval($_COOKIE['id'])."' LIMIT 1"));
    9.  
    10.     if(($userdata['users_hash'] !== $_COOKIE['hash']) or ($userdata['users_id'] !== $_COOKIE['id']))
    11.     {
    12.         setcookie('id', '', time() - 60*24*30*12, '/');
    13.         setcookie('hash', '', time() - 60*24*30*12, '/');
    14.     setcookie('errors', '1', time() + 60*24*30*12, '/');
    15.     header('Location: login.php'); exit();
    16.     }
    17. }
    18. else
    19. {
    20.   setcookie('errors', '2', time() + 60*24*30*12, '/');
    21.   header('Location: login.php'); exit();
    22. }
    23. ?>
    24. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    25. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    26. <head>
    27.   <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    28.   <title></title>
    29. </head>
    30. <body>
    31.   hello!
    32. </body>
    33. </html>

    Подскажите пожалуйста как
    объединить 2 файла, например что бы на login.php была форма авторизации и когда вошел он не перекидывал на другой файл а просто убирал форму и показывал например личный кабинет до тех пока не выйдет пользователь
    код выхода:
    Код (Text):
    1. <form action="" method="post"><input type='submit' name='exit' value='Выйти'/></form>
    2. <?php
    3. if($_REQUEST['exit'])
    4.   {
    5.         setcookie('id', '', time() - 60*60*24*30, '/');
    6.         setcookie('hash', '', time() - 60*60*24*30, '/');
    7.         header('Location: login.php'); exit();
    8.   }
    9. ?>
     
  2. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    183
    а сейчас как?
     
  3. MNW241996

    MNW241996 Новичок

    С нами с:
    2 авг 2018
    Сообщения:
    4
    Симпатии:
    0
    Сейчас если заходишь на файл login.php там показывается авторизация, если на чек заходишь там авторизован, просто не как не могу понять как в 1 файл это все обьединить
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    656
    Для начала перестаньте говорить «заходишь на файл». Грубо говоря, при открытии страниц выводишь файл с формой, если не авторизован, и обычный для них контент, если авторизован.
    --- Добавлено ---
    Чтобы сто раз не клонировать один и тот же код, используете единую точку входа для раздела ЛК или для сайта в целом.