PHP Ajax Captcha (Securimage) проблема - PullRequest
0 голосов
/ 04 марта 2010

У меня небольшая проблема с проверкой капчи с использованием php и ajax. это проверка php:

if(trim($code) == '') {
$error_captcha = '<p class="error">some empty error....</p>';
$errorc = 'error';
$error = $erdiv;
 } else if (trim($code) != ''){
require_once ('securimage.php');
$captcha = new Securimage();
$valid = $captcha->check($code);
if ($valid == false) {
echo '<p class="error">some captcha incorrect error...</p>';
$error_captcha .= '<p class="error"></p>';
   }
  }

это моя форма:

<form class="wufoo leftLabel page" action="javascript:send_action('register.php',3)">

<div class="info">
 <h2>פזור - טופס רישום</h2>
 <?php echo $error; ?>
</div>

<ul>    

<li class="right <?php echo $erroru; ?>">
 <div class="col">
  <input type="text" class="field text large" id="user_register" value="<?php echo $username; ?>" maxlength="255" />
  <?php echo $error_user; ?>
   </div>
    <label class="desc">
  <span class="req">*</span>
    <?php small('שם משתמש'); ?>
   </label>
  <p class="instruct"><small>שם המשתמש</small></p>
 </li>

<li class="right <?php echo $errorp; ?>">
 <div class="col">
  <input type="password" class="field text large" id="pass_register" value="<?php echo $pass; ?>" maxlength="255" />
  <?php echo $error_pass; ?>
   </div>
    <label class="desc">
        <span class="req">*</span>
  <?php small('סיסמא'); ?>
   </label>
  <p class="instruct"><small>נא הזן את סיסמתך</small></p>
 </li>


<li class="right <?php echo $errorp.''.$errorpv; ?>">
 <div class="col">
  <input type="password" class="field text large" id="pass_val_register" value="<?php echo $pass_val; ?>" maxlength="255" />
  <?php echo $error_pass_val.''.$error_pass; ?>
   </div>
      <label class="desc">
  <span class="req">*</span>
    <?php small('אימות סיסמא'); ?>
   </label> 
  <p class="instruct"><small>נא הזן את סיסמתך שנית</small></p>
 </li>

  <li class="right <?php echo $errore; ?>">
 <div class="col">
  <input type="text" class="field text large" id="email_register" value="<?php echo $email; ?>" maxlength="255" />
    <?php echo $error_email; ?>
 </div>
  <label class="desc">
  <span class="req">*</span>
  <?php small('כתובת דוא"ל'); ?>
   </label>
  <p class="instruct"><small>נא הקפד להזין כתובת דוא"ל חוקית על מנת שתוכל להפעיל את חשבונך</small></p>
 </li>
    <li class="right captcha"></li>
   <li class="right <?php echo $errorc; ?>">
 <div class="col">
  <input type="text" class="field text large" id="captcha_register" maxlength="255" />
    <p><img src="securimage_show.php?sid=<?php echo md5(uniqid(time())); ?>"></p> 
    <?php echo $error_captcha; ?> 
 </div>
  <label class="desc">
  <span class="req">*</span>
  <?php small('קוד אבטחה'); ?>
   </label>
  <p class="instruct"><small>נא הזן את קוד האבטחה כפי שמופיע בתמונה</small></p>
 </li>
 <li class="buttons ">
      <input id="saveForm" name="saveForm" class="btTxt submit" type="submit" value="שלח" />


   </li>
</ul>
</form>

(это там чёрт) Проблема в том, что переменная $ eror_captcha вообще не устанавливается при вводе неправильной строки.

1 Ответ

0 голосов
/ 06 марта 2010

JQman, в вашем коде есть несколько вещей, которые затруднят решение проблем. Во-первых, не зная, как работает действительный процесс проверки. Это означает, что мы не можем видеть, что $ valid = $ captcha-> check ($ code); на самом деле Но если предположить, что ваш код на самом деле правильно установит ссылку на действительный код-код и что он вернет «ложь», если код, который вводит человек, не совпадает, вот несколько вещей, которые нужно проверить:

1- Когда я загружаю это в тестовую среду, я не могу получить форму для показа. Когда я удаляю все строки, я получаю полную форму, и появляется сообщение об ошибке. Попробуйте удалить строки small () и посмотрите, будет ли это работать. Если так, то с функцией small () что-то не так.

2 - Я заметил, что это работает на wufoo. Я не очень знаком с их службой, но я знаю об этом. Они могут что-то сделать, чтобы код остановился на предупреждениях / ошибках. При этом я замечаю, что если кто-то вводит неверный код, вы добавляете $ error_captcha следующим образом: $ error_captcha. = '

'; ... однако, $ error_captcha не установлен ранее в показанном вами коде. Это вызовет предупреждение в журнале. Вы можете рассмотреть возможность удаления. = И сделать его =.

Кроме этого, я не вижу ничего другого, что могло бы привести к изменению результатов, которые вы получаете в настоящее время.

...