2013-07-25 5 views
0

Я разработал окно комментариев для получения комментариев. Вместо того, чтобы использовать плагины captcha, я подготовил настраиваемый код с 5-значным номером. Когда я отправляю детали, я все равно получаю страницу с ошибкой. Я проверил различные сайты в Google, но не смог найти правильный ответ.captcha код не работает

  1. comments.html - Комментарий окно для комментариев
  2. captcha.php - Пользовательские CAPTCHA, с 5-значным кодом
  3. submit.php - для обработки коды
  4. error.html - ошибка страницы для неправильной записи
  5. thank.html - Страница о представлении успешного

Я не могу разобраться, из где ошибка. Пожалуйста, помогите мне в этом отношении. Исходные коды comments.html и submit.php приведены ниже.

========= COMMENTS.HTML ==============

<form action="submit.php" method="post"> 
Name: <input type="text" name="name" /> <br> 
Email: <input type="text" name="email" /> <br> 
Comments: <textarea name="coments" /> <br> 
Enter Captcha <img src="captcha.php"><input type="text" name="vercode" /> <br> 
<input type="submit" name='submit' onclick="show_confirm()" value="SUBMIT" /> 
</form> 

============= SUBMIT.PHP =================

<?php 
session_start(); 
if ($_POST["vercode"] != $_SESSION["vercode"] OR $_SESSION["vercode"]=='') 
     { 
    //This page should not be accessed directly. Need to submit the form. 
    header('Location: error.html'); 
    exit; 
     } 
$name = $_POST['name']; 
$email = $_POST['email']; 
$comments = $_POST['comments']; 

if(empty($name) || empty($email)||empty($comments)) 
    { 
    header('Location:error.html'); 
    exit; 
    } 
    if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $_POST[email])) 
    { 
    header('Location:error.html'); 
    exit; 
    } 
    $email_from = '[email protected]'; 
$email_subject = "CONTACT FORM"; 

$email_body="============================\n". 
"FULL NAME: $name\n". 
"EMAIL-ID: $email\n". 
"COMMENTS:  $comments\n". 

$to = "[email protected]"; 
$headers = "From: $email_from \r\n"; 

mail($to,$email_subject,$email_body,$headers); 
//done. redirect to thank-you page. 
header('Location: thank.html'); 
?> 
+0

Вам нужно 'session_start()' в самом верхнем углу вашего submit.php – Ahmad

+0

Sir, session_start(); существует как для submit.php, так и для cptcha.php. Но каждый раз он показывает только страницу с ошибкой. – user2609197

ответ

0

Вам нужно

session_start() 

на самом верху submit.php, который начинается или возобновить session так что вы можете получить доступ к $_SESSION

0

Вы должны сначала проверить, была ли форма отправлена, а затем обработать код. Пример:

если (Исеть ($ _ POST [ «отправить»])) {// обработка материал}

Вы не показать, какие конкретные ошибки вы получите, так что я просто хочу, чтобы связать вас с этот простой PHP-GD-код, который я использовал ранее в некоторых проектах и ​​работает как шарм. Действительно прост и удобен в реализации.

Simple PHP-GD captcha image

0

Похоже, что это может иметь что-то делать с вашей регулярным выражением проверка всегда возвращается ложью.

Возможно, вам захочется проверить правильность установленного вами правила. Кроме того, я прочитал на php.net, что eregi() теперь устарел в 5.3.0, поэтому, возможно, вместо этого используйте preg_match() с флагом PCRE_CASELESS?