Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Простая защита на Php (https://forum.antichat.xyz/showthread.php?t=57747)

Хелпер 07.01.2008 21:19

Простая защита на Php
 
оочень нужен скрипт PHP следующего характера.
Простая авторизация:
2 поля Логин пароль
Кнопка войти.
Проверяет данные через БД. (БД: таблица: user и pass)
Если введено верно: открывает данную страницу(которая защищена)
Если не верно: выводит сообщение: доступ закрыт и типа этого
Спасибо заранее

Ch3ck 07.01.2008 21:33

http://bozza.ru/?c=403&p=content
http://bozza.ru/?c=404&p=content

Isis 07.01.2008 21:35

[
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>";
            }
        }
    }
?>


Хелпер 07.01.2008 21:40

Цитата:

Сообщение от Isis
...

ВЫ уж извените, но я совсем тупой. Поясните!

.:EnoT:. 07.01.2008 21:48

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()
Удачи :)

Хелпер 07.01.2008 21:55

В обоих случаях при зоходи на этот скрипт выводит следующие:
мой_логин@esoo.ru li-xkfJo мой_логин bZ62vg-S ykafxtaa

.:EnoT:. 07.01.2008 22:17

Вот подправил немного скрипт:
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
}
?>

У меня всё прекрасно работает...банальный пример таблицы
Код:

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, он вроде такого не заказывал)))

SSB1981 08.01.2008 16:37

Если надо могу скинуть скрипт, но БД в текстовом файле! (У меня с MySQL не получается подружиться...)


Время: 01:42