catpha проверка

systems

Registered
Добър ден искам да попитам как може да се направи проверката на тази форма аз съм добавил catpha но като натисна submit бутона се регистрирам без тази проверка та въпроса ми как ще стане без потребителя да е попълнил полето да неможе да се регистрира?

ето формата:
HTML:
</HEAD>
<BODY>
<FORM METHOD="POST" ACTION="register.php?lang=en">
<P align="center">
  <div align="center">
    <table width="300" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td>[[lang_username]]</td>
        <td><div align="right">
          <INPUT TYPE="TEXT" NAME="acct_username" SIZE=30>
        </div></td>
      </tr>
      <tr>
        <td>[[lang_password]]</td>
        <td><div align="right"><INPUT TYPE="PASSWORD" NAME="password1" SIZE=30> </div></td>
      </tr>
      <tr>
        <td>[[lang_confpass]]</td>
        <td><div align="right"><INPUT TYPE="PASSWORD" NAME="password2" SIZE=30> </div></td>
      </tr>
      <tr>
        <td>[[lang_email]]</td>
        <td><div align="right"><INPUT TYPE="TEXT" NAME="acct_email" SIZE=30> </div></td>
      </tr>
      <tr>
        <td colspan="2"><div align="center">
        Коя година е създадена България? <input type='text' name='captcha'>
        <INPUT TYPE="Submit" NAME="Submit" VALUE="[[lang_submit]]">
        </div></td>
      </tr>
    </table>
  </div>
  </P>
  <p align="center">[[menu]]</p>
  <p align="center">[[footer]]</p>
</FORM>
</BODY>
</HTML>

а за ето тази проверка става на въпрос:
Код:
 Коя година е създадена България? <input type='text' name='captcha'>



а ето ми и пхп фаила ако някои реши да си направи подобна catpha:
PHP:
<?php
$answer = $_POST['captcha'];
if($answer == 681)
{
продължи изпълнението на формата за регистрация
}
else
{
echo "Не сте отговорили на въпроса!";
}
?>
 
http://www.google.com/recaptcha
http://www.phpcaptcha.org/
http://www.white-hat-web-design.co.uk/blog/php-captcha-security-images/

ползвал съм рекаптча и съм доволен. в сайта си има обяснения как се ползва
 
Аз мисля, че става така, защото get данните идват като string. Опитай
PHP:
<?php
$answer = (int )$_POST['captcha'];//правиш $answer да е число
if($answer == 681)
{
продължи изпълнението на формата за регистрация
}
else
{
echo "Не сте отговорили на въпроса!";
}
?>
 
неговият проблем не е (инт) ами той иска да разбере това 681 как да се генерира. Дадох му примерни каптча, които имат обяснения как стават нещата :).

едит: сега погледнах, че той е аднал коя година е създадена българската държава и това седи постоянно. Моято лично мнение е че това е напълно безмислено. Предполагам, че ти правиш тази проверка против така наречените ботове (програми), да правят регистрации. Е като ти седи това постоянно, човекът който пише този бот ще адне един ред, който да изпраща 681 и пак ще може да се регистрира бота. А това до (инт) пред $_Post['captcha'] може и без него. ПХП ще си го разпознае
 
Всъщност проблема ми идва от тук че като реша да се регистрирам си се регистрирам без да попълвам catpha а идеята ми беше без нея да неможе да се прави регистрация именно това се чудя как става тъи като формата е html а проверката е пхп тоест идеята ми да неможе да се прави регистрация без да е попълнена годината. като натисна бутона sumbit директно си правя регистрация без значение дали е попълнено полето с годината или не.
 
Register Page Form
Код:
<form method="post" action="register.php">
            <input type="text" name="username"><br>
            <input type="text" name="pswd"><br>
            <input type="text" name="captcha"><br>
            <input type="submit" name="submit1"><br>
</form>
register.php
Код:
<?php
            $answer = $_POST['captcha'];
             if(isset($answer) && $answer == 681) {
                       echo 'answer is ok';
              }else {
                       echo "answer fail!";
              }
?>
 

Back
Горе