Простая защита на Php

Discussion in 'PHP' started by Хелпер, 7 Jan 2008.

  1. Хелпер

    Хелпер Elder - Старейшина

    Joined:
    21 Feb 2007
    Messages:
    120
    Likes Received:
    31
    Reputations:
    -1
    оочень нужен скрипт PHP следующего характера.
    Простая авторизация:
    2 поля Логин пароль
    Кнопка войти.
    Проверяет данные через БД. (БД: таблица: user и pass)
    Если введено верно: открывает данную страницу(которая защищена)
    Если не верно: выводит сообщение: доступ закрыт и типа этого
    Спасибо заранее
     
    #1 Хелпер, 7 Jan 2008
    Last edited: 7 Jan 2008
  2. Ch3ck

    Ch3ck Elder - Старейшина

    Joined:
    9 Jun 2006
    Messages:
    1,362
    Likes Received:
    1,157
    Reputations:
    430
    http://bozza.ru/?c=403&p=content
    http://bozza.ru/?c=404&p=content
     
  3. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    [
    PHP:
    <?php
        
    include("header.php");
        
    error_reporting(0);
        
    session_start();

    foreach(
    $_POST as $x => $y)
    {
                
    $x[$y] = mysql_escape_string($x[$y]);
    }
            
           
    $query    mysql_query("SELECT `name`,`pass` FROM `users` WHERE `name`='".$_COOKIE['name']."' AND `pass`='".$_COOKIE['pwd']."'");
        if(
    mysql_num_rows($query)) $reged 1;


        if(
    $reged)
        {
            echo 
    "Хм...разве вы уже не вошли?";
        }
        else
        {
            echo 
    '<div align="center">
                <form method="post">
                <table>
                    <tr>
                        <td>Логин</td>
                        <td><input type="text" value="" name="name"></td>
                    </tr>
                    <tr>
                        <td>Пароль</td>
                        <td><input type="password" value="" name="pass"></td>
                    </tr>
                    <tr>
                        <td></td>
                        <td><input type="submit" value="Войти" name="sub"></td>
                    </tr>
                </table>
                </form>
                </div>'
    ;
        }

        if(
    $_POST['sub'])
        {
            
    $password md5($_POST['pass']);
            
    $error '';

            if (!
    get_magic_quotes_gpc())
            {
                 
    $_POST['name'] = mysql_escape_string($_POST['name']);
            }

            if(empty(
    $_POST['name']) || empty($_POST['pass']))
            {
                
    $error 'Вы не ввели логин или пароль';
            }

            if(
    $error)
            {
                echo 
    "<div align='center'><div class='error'>".$error."</div></div>";
            }
            else
            {
                
    $query    "SELECT `name`, `pass` FROM `users` WHERE `name`='".$_POST['name']."' AND `pass`='".$password."'";
                
    $result    mysql_query($query);
                if(
    mysql_num_rows($result))
                {
                    
    $row mysql_fetch_array($result);
                    
    setcookie('name'$row['name'], time() + 86400 30 12);
                      
    setcookie('pwd'$row['pass'], time() + 86400 30 12);
                    echo 
    "<div align='center'><div class='complete'>Вы успешно зашли</div></div>";
                }
                else
                {
                    echo 
    "<div align='center'><div class='error'>Логин или пароль не верен.</div></div>";
                }
            }
        }
    ?>
     
    2 people like this.
  4. Хелпер

    Хелпер Elder - Старейшина

    Joined:
    21 Feb 2007
    Messages:
    120
    Likes Received:
    31
    Reputations:
    -1
    ВЫ уж извените, но я совсем тупой. Поясните!
     
    #4 Хелпер, 7 Jan 2008
    Last edited by a moderator: 7 Jan 2008
  5. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    PHP:
    <?php

    if(isset($_POST['go']))
    {
        
    $tlogin trim($_POST['login']);
        
    $tpass trim($_POST['pass']);
        if(empty(
    $tlogin) or empty($tpass))
        {
            echo
    "Не заполнено поле логин или пароль";
        }
        else
        {
          
    #тут можно замутить проверку на спецсимволы
          
    $login $_POST['login'];
          
    $pass $_POST['pass'];    
          
    //$pass = md5($pass); можно и зашифровать
          
    $query mysql_query("SELECT * FROM `users` WHERE `user` = '".$login."' and `pass` = '".$pass."'");
          if(
    mysql_num_rows($query) == 0)
          {
                echo
    "БЛА-БЛА-БЛА";
          }          
          else
          {
            
            
            
    /*
            Твоя защищённая страница
            */
          
          
          
    }

        }
    }
    else
    {
        
    ?>    
        
        Введите логин и пароль:
        <form action method="post">
        <input type="text" name="login" />
        <input type="password" name="pass" />
        <input type="submit" name="go" /> 
        </form>
        
        <?php 
    }    
    ?>
    Типа такого, писал сходу поэтому не тестил, но по идее должно работать....плюс ко всему рекомендую использовать сессии или куки.
    Вводимые данные не проверяются, используй mysql_real_escape_string() и htmlspecialchars() и пароль шифруй хотя бы в md5()
    Удачи :)
     
    #5 .:EnoT:., 7 Jan 2008
    Last edited: 7 Jan 2008
  6. Хелпер

    Хелпер Elder - Старейшина

    Joined:
    21 Feb 2007
    Messages:
    120
    Likes Received:
    31
    Reputations:
    -1
    В обоих случаях при зоходи на этот скрипт выводит следующие:
    мой_логин@esoo.ru li-xkfJo мой_логин bZ62vg-S ykafxtaa
     
  7. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Вот подправил немного скрипт:
    PHP:
    <?php
    @session_start();
    $dbhost "localhost";
    #Имя пользователя БД
    $dbuser "root";
    #Пароль пользователя
    $dbpass "";
    #Имя БД
    $dbname "db";
    mysql_connect("$dbhost""$dbuser""$dbpass") or die("Неконнект");
    mysql_select_db("$dbname") or die("Неконнект");


    if(isset(
    $_POST['go']))
    {

        
    $tlogin trim($_POST['login']);
        
    $tpass trim($_POST['pass']);

        if(empty(
    $tlogin) or empty($tpass))
        {
            echo
    "Не заполнено поле логин или пароль";
        }
        else
        {
           
    //$pass = md5($pass); можно и зашифровать
           
    if (!get_magic_quotes_gpc())
           {
              
    $login htmlspecialchars(mysql_escape_string($_POST['login']));
              
    $pass htmlspecialchars(mysql_escape_string($_POST['pass']));
           }
           else
           {
              
    $login htmlspecialchars($_POST['login']);
              
    $pass htmlspecialchars($_POST['pass']);
           }

          
    $query mysql_query("SELECT * FROM `users` WHERE `user` = '".$login."' and `pass` = '".$pass."'");
          if(
    mysql_num_rows($query) == 0)
          {
                echo
    "БЛА-БЛА-БЛА";
          }
          else
          {
            echo
    "ПривеД";

            
    /*
            Твоя защищённая страница
            */


          
    }

        }
    }
    else
    {
        
    ?>

        Введите логин и пароль:
        <form action method="post">
        <input type="text" name="login" /><br />
        <input type="password" name="pass" /><br />
        <input type="submit" name="go" />
        </form>

        <?php
    }
    ?>
    У меня всё прекрасно работает...банальный пример таблицы
    Code:
    CREATE TABLE `users` (
    `id` int NOT NULL PRIMARY KEY AUTO_INCREMENT ,
    `user` text NOT NULL ,
    `pass` text NOT NULL
    ) ENGINE = MYISAM DEFAULT CHARSET = cp1251
    
    insert into `users` value(null, '123', '12345')
    Логин 123, пасс 12345
    Опять же пасс не стал шифровать.


    З.Ы. Исис ну ты и намудрил)) Ему ж простой код надо.
    И кстати откуда в твоём скрипте взялся header.php, он вроде такого не заказывал)))
     
    1 person likes this.
  8. SSB1981

    SSB1981 Elder - Старейшина

    Joined:
    7 Jan 2008
    Messages:
    108
    Likes Received:
    9
    Reputations:
    0
    Если надо могу скинуть скрипт, но БД в текстовом файле! (У меня с MySQL не получается подружиться...)