Проверка ( проверяет следующее значение )

Тема в разделе "PHP программирование", создана пользователем LazyC0d3, 29 дек 2010.

  1. LazyC0d3

    LazyC0d3 Гость

    Я сделал что-то вроде капчи, просто складываешь цифры пишешь ответ и нажимаешь кнопку ( даётся в виде картинок ), но у меня проблема, что при нажатии на кнопку он проверяет не текущее сообщение которое я ввел в поле а следующее ( и естественно ответ не верный ) Как можно эту вещь исправить.

    Там что-то типо регистрации. Если надо могу выложить код.
    У меня была идея записи ответа в какую либо переменную..не сработало.
    Я ещё начинающий в программировании так что особо жутко не шпыняйте
    Сидел дня 2, немогу уже, наконец понял что к чему но незнаю как решить

    HELP! B)
     
  2. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.468
    Симпатии:
    27
    ничего не понятно. Код в студию.
     
  3. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    LazyC0d3
    Записывай значение в переменную сессии.
     
  4. LazyC0d3

    LazyC0d3 Гость

    Регистрация:
    Код (PHP):
    <?
    session_start();
    if(isset($_GET['nick']))
    {
    $res=proverka();
    /*echo "res-$res";*/
    if($res==1) zapis();
    else forma($res);
    }
    else forma(0);

    function forma($err)
    {
    ?>
    <?
    switch($err)
    {
    case 2: echo "<center><font color=red>Empty field</font></center>";
    break;
    case 3: echo "<center><font color=red>  Data lenght is bad</font></center>";
    break;
    case 4: echo "<center><font color=red>  Password not equals</font></center>";
    break;
    case 5: echo "<center><font color=red>  User with that name already exists, please change username</font></center>";
    break;
    case 6: echo "<center><font color=red>  CAPTCHA!!!111</font></center>";

    }
    ?>
    <center>
    <table width="500" border="1">
    <form>
    <input type="hidden" name="page" value="reg">
    <tr>
    <td> Username:<font color="#FF0000"> *</font></td>
    <td colspan="2px" align="left"> <input type="text" name="nick" style="width: 310px"></td>
    </tr>
    <tr>
    <td> Password:<font color="#FF0000"> *</font></td>
    <td align="left" style="padding-left: 7px">Password:  <input type="password" name="pass1"></td>
    <td align="left" style="padding-left: 7px">Retype password:  <input type="password" name="pass2"></td>
    </tr>
    <tr>
    <td> Sex:</td>
    <td colspan="2px"><!-- <input type="radio" name="sex" value="Men"> Men<br><input type="radio" name="sex" value="Women"> Women -->
    <left>
     <select name="sex" style="width: 314px;">
    <option value="none" selected>
    <option value="men">Men
    <option value="women">Women
    </select>
    </left>
    </td>
    </tr>
    <tr>
    <td> Town:</td>
    <td colspan="2px" align="left"> <input type="text" name="town" style="width: 310px"></td>
    </tr>
    <tr>
    <td> <?php include('captcha2.php'); ?></td>
    <td colspan="2px" alighn="left"> <input type="text" name="captcha" style="width: 310px" value="<?php echo "$rez"; ?>"></td>
    </tr>
    <tr>
    <td><center><input type="submit" name="OK" title="Зарегистрироваться" value="Зарегистрироваться"></center></td><td><input type="reset" title="Очистить" value="Очистить все поля"></td>
    </tr>
    </table>
    </form>
    </center>
    <?
    switch($err)
    {
    case 2: echo "<center><font color=red>Empty field</font></center>";
    break;
    case 3: echo "<center><font color=red>  Data lenght is bad</font></center>";
    break;
    case 4: echo "<center><font color=red>  Password not equals</font></center>";
    break;
    case 5: echo "<center><font color=red>  User with that name already exists, please change username</font></center>";
    break;
    case 6: echo "<center><font color=red>  CAPTCHA!!!</font></center>";
    }

    }

    function proverka()
    {
    $nick=trim($_GET['nick']);
    $pass1=trim($_GET['pass1']);
    $pass2=trim($_GET['pass2']);
    if($nick=="" || $pass1=="" || $pass2=="")
    return 2;
    if(strlen($nick)<6 || strlen($pass1)<6 || strlen($pass2)<6)
    return 3;
    if($pass1!=$pass2)
    return 4;
    include('conn.php');
    $sel="SELECT id FROM vdjagilev_users WHERE username='$nick'";
    $res=mysql_query($sel,$link) or die($sel);
    if(mysql_num_rows($res)>0)
    return 5;

    //global $rez;
    //$captcha=trim($_GET['captcha']);
    //if($captcha != $rez) //|| $mcaptcha!=$rez_if_2 || $mcaptcha!=$rez_if2_1 || $mcaptcha!=$rez_if2_2 || $mcaptcha!=$rez_if_eq)
    return 6;

    return 1;
    }

    function zapis()
    {
    include ('lib2.php');
    $a=genArray(4,4,1,6);
    $s=serialArray($a);
    include ('conn.php');
    $nick=trim($_GET['nick']);
    $pass=trim($_GET['pass1']);
    $sex=trim($_GET['sex']);
    $town=trim($_GET['town']);
    $ip = $_SERVER['REMOTE_ADDR'];
    $useragent = $_SERVER['HTTP_USER_AGENT'];
    $port = $_SERVER['REMOTE_PORT'];
    $sel="INSERT INTO vdjagilev_users (username,passwd,date_reg,random_user_reg_num,town,sex,ip,useragent,port) VALUES ('$nick','$pass',now(),'$s','$town','$sex','$ip','$useragent','$port')";
    mysql_query($sel,$link) or die($sel);
    echo "<center><font color=red><b>Registration OK</b></font></center>";
    }
    ?>

    А вот что-то на подобие "капчи":
    Код (PHP):
    <?php
    session_start();
    $num1 = Rand(0,10);
    $num2 = Rand(0,10);
    $wha = array('+','-');
    $img = array('./cap/cap0.jpg','./cap/cap1.jpg','./cap/cap2.jpg','./cap/cap3.jpg','./cap/cap4.jpg','./cap/cap5.jpg','./cap/cap6.jpg','./cap/cap7.jpg','./cap/cap8.jpg','./cap/cap9.jpg','./cap/cap10.jpg');
    $img1 = array('./cap/cap0.jpg','./cap/cap1.jpg','./cap/cap2.jpg','./cap/cap3.jpg','./cap/cap4.jpg','./cap/cap5.jpg','./cap/cap6.jpg','./cap/cap7.jpg','./cap/cap8.jpg','./cap/cap9.jpg','./cap/cap10.jpg');
    if($num1>$num2)
    {
    $whado = $wha[Rand(0,1)];
    if($whado=='+')
    {
    $rez=$num1+$num2;
    echo "<img width='35' height='35' src='$img[$num1]'>"; echo "<img width='35' height='35' src='./cap/plus.jpg'>"; echo "<img width='35' height='35' src='$img1[$num2]'>"; echo $rez . "<br>";
    echo "$num1 + $num2 = ";
    // echo $num1+$num2;
    }
    if($whado=='-')
    {
    $rez=$num1-$num2;
    echo "<img width='35' height='35' src='$img[$num1]'>"; echo "<img width='35' height='35' src='./cap/minus.jpg'>"; echo "<img width='35' height='35' src='$img1[$num2]'>"; echo $rez . "<br>";
    echo "$num1 - $num2 = ";
    // echo $num1-$num2;
    }
    //$ans = $num1.$whado.$num2;
    //echo "$num1 " . $wha[Rand(0,1)] . " $num2 =" . $ans;
    //echo $whado . " IF 1";
    }
    if($num2>$num1)
    {
    $whado = $wha[Rand(0,1)];
    if($whado=='+')
    {
    $rez=$num2+$num1;
    echo "<img width='35' height='35' src='$img[$num2]'>"; echo "<img width='35' height='35' src='./cap/plus.jpg'>"; echo "<img width='35' height='35' src='$img1[$num1]'>"; echo $rez . "<br>";
    echo "$num2 + $num1 = ";
    // echo $num2+$num1;
    }
    if($whado=='-')
    {
    $rez=$num2-$num1;
    echo "<img width='35' height='35' src='$img[$num2]'>"; echo "<img width='35' height='35' src='./cap/minus.jpg'>"; echo "<img width='35' height='35' src='$img1[$num1]'>"; echo $rez . "<br>";
    echo "$num2 - $num1 = ";
    // echo $num2-$num1;
    }
    }
    if($num1==$num2)
    {
    $rez=$num1+$num1;
    echo "<img width='35' height='35' src='$img[$num1]'>"; echo "<img width='35' height='35' src='./cap/plus.jpg'>"; echo "<img width='35' height='35' src='$img1[$num1]'>"; echo $rez . "<br>";
    echo "$num1 + $num2 = ";
    //echo $num1+$num2;
    }
    /*if($num1<=$num2)
    {
    $whado = $wha[Rand(0,1)];
    if($whado=='
    //echo $whado1 . " IF 2";
    //echo "$num2 " . $wha[Rand(0,1)] . " $num1 =" . $num1 . $wha[Rand(0,1)] . $num2;
    }
    */

    ?>
     
  5. acorn

    acorn PHP Developer

    Регистрация:
    29 авг 2004
    Сообщения:
    599
    Симпатии:
    3
    LazyC0d3
    я уже ответил на ваш вопрос
     
  6. LazyC0d3

    LazyC0d3 Гость

    А можно на примере?))) Как это реализовать какую именно переменную? Хотябы кусок кода и куда его вставить? Буду признателен
     
  7. LazyC0d3

    LazyC0d3 Гость

    Всё! Большое спасибо! Понял как решить!
    Вообщем добавил в конец captcha.php строку:

    Код (PHP):
    $_SESSION['captcha']=$rez;
    А в реге добавил проверку:

    Код (PHP):
    if($_SESSION['captcha']!=$_GET['captcha'])
    Acorn Спасибо большое за подсказку
     
Загрузка...

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