помогите сделать конкурс

Discussion in 'PHP' started by Doom123, 20 Apr 2007.

  1. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    Привет... я не програмист но хочу создать конкурс на сайте

    вот написал самую простейшию логин форму помогите сделать её более безопасной но также чтоб могли узнать логин и пароль

    PHP:
    <?php
    if ($cook 3) {echo "<center><h1>ОШИБИТСЯ МОЖНО ТОЛЬКО 4 РАЗА!!!</h1></center>";} else {
    $eror 0;
    $cook 0;
    $b "Проверка ваших знаний";
    if (isset(
    $_REQUEST['do'])) do {
    if (
    $_REQUEST['nm'] != "somename") { $eror 1; break; }
    if (
    $_REQUEST['ps'] != "somepass") { $eror 1; break; } 
    header'refresh: 3; url=/Troy.php' );
    echo 
    '<h1>Редирект на строницу с трояном через 3 секунды...</h1>';
    exit();
    }
    while (
    0);
    if (
    $eror) {
    $b "Вы ниче не знаете блин";
    if (isset(
    $_COOKIE['cook'])) $cook $_COOKIE['cook'];
    $cook++;
    setcookie("cook"$cook0x7fffffff"/"); }
    ?>
    <html>
    <center><font color="red" size=4><b><? echo $b?></b></font><br>
    <form action="<?=$_SERVER['REQUEST_URI']?>" method=post>
    Имя:    <input type=text name="nm"><br>
    пароль: <input type=password name="ps"><BR>
    <input type=submit name="do" value="Давай">
    </form></center>
    </html>
    <?}?>
    если говорю глупости пните меня по бошке))
     
  2. Rebz

    Rebz Super Moderator
    Staff Member

    Joined:
    8 Nov 2004
    Messages:
    4,055
    Likes Received:
    1,532
    Reputations:
    1,128
    чтобы могли узнать логин и пароль.. юзай JavaScript
    quest.antichat.net - 20 levels
    возможно то, что тебе нужно ;)
     
  3. je0n

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

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    короче вот скрипт, который я сам все время для таких целей юзаю. Пароль и логин хранятся в БД. Подключаюсь к БД я через
    PHP:
    require("db.php");    //просто подключение к БД и все
    а куки ставлю и убираю через JavaScript. Пароли в БД храняться в md5. Корочь вот весь код:
    PHP:
    <?php
    require("db.php");
    if((isset(
    $_POST['login']))&&($_POST['login']!="")&&(isset($_POST['password']))&&($_POST['password']!=""))
    {
        
    $login=mysql_escape_string($_POST['login']);
        
    $password=md5(mysql_escape_string($_POST['password']));
        
    $query="select * from users where (login='$login' && password='$password');";
        
    $db=mysql_query($query);
        if((
    $db) && (mysql_num_rows($db)==1))
        {
            
    $val=mysql_fetch_assoc($db);
            if(
    $val['activate']!="activated")
            {
                echo 
    "
                <script language='JavaScript'>
                alert('Ожидается подтверждение регистрации');
                document.location='index.php?r';
                </script>
                "
    ;
            }
            else 
            {
                echo 
    "
                <script language='JavaScript'>
                document.cookie='uid=
    $val[uid]';
                document.cookie='pass=
    $val[password]';
                alert('Вы успешно вошли в систему аукциона');
                document.location='index.php?r';
                </script>
                "
    ;
            }
        }
        else 
        {
            echo 
    "
                <script language='JavaScript'>
                alert('Неправильное имя пользователя или пароль');
                document.location='index.php?r';
                </script>
            "
    ;
        }
    }
    ?>
    Ну а чтобы юзер видел что он активировался в системе проверяй вот такой функцией стоят куки или нет:
    PHP:
    require("db.php");

    function 
    IsLoged()
    {
        if((isset(
    $_COOKIE['uid']))&&($_COOKIE['uid']!="")&&(isset($_COOKIE['pass']))&&($_COOKIE['pass']!=""))
        {
            
    $uid=$_COOKIE['uid'];
            
    $password=$_COOKIE['pass'];
            
    $query="select * from users where (uid=$uid && password='$password');";
            
    $db=mysql_query($query);
            if(
    mysql_num_rows($db)==1)
            {
                
    $val=mysql_fetch_assoc($db);
                if(
    $val['activate']==="activated")return "YES";else return "WAIT_FOR_ACTIVATION";
            }
            else return 
    "NO";
        }
        else return 
    "NO";
    }

    ну а дальше уже сам лезешь в свою БД и отображаешь инфу о юзере
     
    #3 je0n, 20 Apr 2007
    Last edited: 20 Apr 2007
    1 person likes this.
  4. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    Спасибо!
     
  5. DRON-ANARCHY

    DRON-ANARCHY Отец порядка

    Joined:
    4 Mar 2005
    Messages:
    716
    Likes Received:
    142
    Reputations:
    50
    PHP:
    require("db.php");    //просто подключение к БД и все
    опять же... а ниче, если я зарегаюсь как system($_GET['cmd']) или вроде того?
     
  6. SMiX

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

    Joined:
    25 Jul 2005
    Messages:
    227
    Likes Received:
    55
    Reputations:
    29
    Дык в том файле просто код подключения к базе - это не база, а просто mysql_connect/pconnect с данными для логина в бд.
     
  7. je0n

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

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    ну да, вот что там в db.php:
    PHP:
    <?php
    $db_user
    ="root";
    $db_host="localhost";
    $db_pass="";
    $db_name="auction";
    if(!
    mysql_connect($db_host,$db_user,$db_pass))
    {
      echo 
    "Не могу подключиться к базе данных. Обратитесь к администратору.";
      exit;    
    }
    mysql_select_db($db_name);
    ?>
    Извиняюсь, что там везде про аукцион написано :)... Просто сейчас именно его пишу и куски оттуда выдираю :)
     
  8. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    PHP:
    while (0); 
    жесть! это типа попытка обфускации кода?

    >>je0n
    PHP:
    $password=md5(mysql_escape_string($_POST['password'])); 
    здесь mysql_escape_string() впринципе не нужна))

    а вот тут:
    PHP:
    function IsLoged()
    {
        if((isset(
    $_COOKIE['uid']))&&($_COOKIE['uid']!="")&&(isset($_COOKIE['pass']))&&($_COOKIE['pass']!=""))
        {
            
    $uid=$_COOKIE['uid'];
            
    $password=$_COOKIE['pass'];
            
    $query="select * from users where (uid=$uid && password='$password');";
            
    $db=mysql_query($query);
            if(
    mysql_num_rows($db)==1)
            {
                
    $val=mysql_fetch_assoc($db);
                if(
    $val['activate']==="activated")return "YES";else return "WAIT_FOR_ACTIVATION";
            }
            else return 
    "NO";
        }
        else return 
    "NO";
    }  
    какраз надо! sql-inj
     
    #8 nc.STRIEM, 20 Apr 2007
    Last edited: 20 Apr 2007
    1 person likes this.
  9. je0n

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

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    спасибо ;) !!!большое!!!

    вот бл*ть!!! Почти каждый скрипт был уязвим через куки!
     
    #9 je0n, 20 Apr 2007
    Last edited: 20 Apr 2007
  10. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    ну эту часть примера я брал с книжки по программированию на пхп5 написаной создателем проекта денвер...