1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

1.1.2 Подключеник к БД, проверка логина и пароля

Тема в разделе "Основные вопросы по XenForo", создана пользователем Nicolayka, 04.04.2012.

Загрузка
  1. Nicolayka

    Nicolayka Местный

    Регистрация:
    25.02.12
    Сообщения:
    70
    Симпатии:
    13
    Версия XF:
    1.4.4
    Всем привет. Помогите переписать скрипт для подключения и проверки логина и пароля (введённого в форму авторизации)
    index.php
    PHP:
    <?
    include(
    'config.php');
    $userinfo='';
    $state='0';
    if( (isset(
    $_COOKIE['login'])) & (isset($_COOKIE['password'])) ) {
      if (!isset(
    $_GET['exit'])) {
        
    $login=$_COOKIE['login'];
        
    $password=$_COOKIE['password'];
     
    $sql="SELECT id, password FROM users WHERE login='$login'";
      
    $res=mysql_query($sql);
      if(
    mysql_num_rows($res)>0){
          
    $userinfo mysql_fetch_array($res);
          if(
    strcmp($password,md5($userinfo['password'])) == 0) {
     
    $sql="SELECT * FROM users WHERE login='$login'"#выделяем данные из БД
    $res=mysql_query($sql);
    $userinfo=mysql_fetch_array($res);
    $time=time();
     
        
    setcookie("login",$login,$time+1800);
        
    setcookie("password",$password,$time+1800);
        
    $state 1;
          }
        }
      } else {
     
        
    setcookie("login");
        
    setcookie("password");
      }
    }
    if(
    $state != 1) {
      if( (isset(
    $_POST['login'])) & (isset($_POST['password'])) ){
      
    $login $_POST['login'];
     
     
      
    $sql "SELECT id, password FROM users WHERE login='$login'";
      
    $res mysql_query($sql);
        if(
    mysql_num_rows($res)>0) {
          
    $userinfo mysql_fetch_array($res);
          
    $password $_POST['password'];
          if(
    strcmp($password,$userinfo['password'])==0){
     
     
        
    $sql="SELECT * FROM users WHERE login='$login'";
        
    $res=mysql_query($sql);
        
    $userinfo=mysql_fetch_array($res);
        
    $time=time();
     
        
    setcookie("login"$login$time+1800);
        
    setcookie("password"md5($password), $time+1800);
        
    $state 1;
          }
        }
      }
    }
    if(
    $state != 1) {
    ?>
     
    <form method="post" action="index.php">
     
    Логин: <input type="text" size="30" name="login"><br />
     
    Пароль: <input type="password" name="password" size="30"><br />
     
    <input type="submit" value="Войти">
     
    </form>
     
    <?
     
    } else {
     
      header("Location: panel.php");
     
    }
    ?>
    сonfig.php
    PHP:
    <?php
     
    $host 
    =        '****';
    $user =        '****';
    $password =    '****';
    $dbname =    '****';
     
    if(!
    mysql_connect($host,$user,$password))
      die(
    'Не удалось подключиться!');
    elseif(!
    mysql_select_db($dbname))
      die(
    'Не удалось выбрать БД!');
    ?>
    С меня лайк если всё заработает!))
     
  2. Nicolayka

    Nicolayka Местный

    Регистрация:
    25.02.12
    Сообщения:
    70
    Симпатии:
    13
    Версия XF:
    1.4.4
    И ещё как-то прикрутить:
    PHP:
    <?
    function 
    check()
    {
        if (empty(
    $pass)||empty($name))
        
    error("Не указан логин или пароль");
        
    $sql "select * from my_site where login='".$name."'";
        if (
    $show mysql_query($sql))
        {
            
    $a mysql_fetch_array($show);
            if (
    $a['pass']!=$pass) {
                
    error("Не верное сочетание логин - пароль");
            }
            else {
                
    session_register("name","pass");
            }
        }
        else {
            
    error("Ошибка запроса к базе данных");
        }
    }
    ?>
     
  3. Desperado

    Desperado Местный

    Регистрация:
    23.10.10
    Сообщения:
    270
    Симпатии:
    98
    Версия XF:
    1.1.3
    Аж глаз режет:

    1. Логин не проходит валидации (прощай база)
    2. Используется старенький mysql... PDO/MySQLi вам в помощь. Ибо первый - фактически деприкейтед и 1й ногой в могиле. Да и там есть подготовленные выражения... хоть спасут вас от части проблем...
    3. check() - это вообще что такое, простите? Даже так, на вскидку: все переменные внутри функции - локальные. Откуда берутся $pass, $name, $sql - не ясно

    Да и как-то топорно всё...
     
  4. Nicolayka

    Nicolayka Местный

    Регистрация:
    25.02.12
    Сообщения:
    70
    Симпатии:
    13
    Версия XF:
    1.4.4
    Всё. Сделал. Тема закрыта.
     

Поделиться этой страницей