Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Ошибка в скрипте


Автор: berdini 27.6.2011, 18:53
 Пытаюсь поставить капчу на форму обратной связи. Защита работает, но если введённый код и код капчи совпадают, сообщение, почему-то ни как не хочет отправляться.....  smile  
Ни как не пойму в чём может быть ошибка!  smile:  Очень надеюсь на Вашу помощь! smile: 

Код

<?
  session_start();
  session_register('scd');
  
$mailto = "***@***.ru";
$charset = "windows-1251";
$subject = "Сообщение с моего сайта";
$content = "text/html";
$status="<br>";
if (!empty($_POST))
{
    $pattern = "/^[a-z0-9](?:[a-z0-9_\.-]*[a-z0-9])*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])*\.)+[a-z]{2,4}$/i";

   if (isset($_SESSION['securityCode']) && $HTTP_SESSION_VARS['securityCode'] !== $_POST['secCode'])
            $status .= 'Введён неправильный защитный код!<br>';
   if ($_POST["name"] == "")
       $status .= 'Введите Ваше имя<br>';
   if ( !preg_match($pattern, $_POST["mailfrom"]) )
       $status .= 'Введите правильный электронный адрес<br>';
   if ($_POST["message"] == "")
       $status .= 'Сообщение оставлено пустым<br>';
   if ($status != "<br>")
   {
        echo $status;
    }
        exit();
   }

   $headers  = "MIME-Version: 1.0\r\n";
   $headers .= "Content-Type: ".$content." charset=".$charset."\r\n";
   $headers .= "From: \"".$_POST['name1']."".$_POST['name']."\" <".$_POST['mailfrom']."\" <".$_POST['hidden'].">\r\n";
   $headers .= "Bcc: ***@***.ru\r\n";
   $headers .= "X-Mailer: E-mail from my super-site \r\n";
   $sendmessage = "<html><body><p><b>Отзыв на произведение:</b> ".$_POST['name1']."</p><p><b>Имя пользователя:</b> ".$_POST['name']."</p>
     <p><b>E-mail для связи:</b> ".$_POST['mailfrom']."</p>
     <p><b>Сообщение:</b> ".$_POST['message']."</p>     
          </body></html>";
            
         if (mail($mailto,$subject,$sendmessage,$headers))
   {
      unset($_POST['name1'], $_POST['name'], $_POST['mailfrom'], $_POST['message']);
      $status = 'Спасибо, Ваше сообщение отправлено!';
             }
   else
   {
      $status = 'По техническим причинам сообщение не было отправлено. Попробуйте снова, а если не получится, обратитесь к разработчикам';
   }
 unset($_SESSION['securityCode']);
echo $status;
?>


Автор: SneG0K 27.6.2011, 19:34
Код

if (isset($_SESSION['securityCode']) && $HTTP_SESSION_VARS['securityCode'] !== $_POST['secCode'])
            $status .= 'Введён неправильный защитный код!<br>'

Попробуйте так
Код

if ($_SESSION['securityCode'] != $_POST['secCode'] || $_SESSION['securityCode'] == null) {
    $status .= 'Введён неправильный защитный код!<br>';
}

А вообще проверьте наличие защитного кода в $_SESSION и что передается в $_POST

Автор: berdini 27.6.2011, 22:15
К сожалению ситуация не изменилась: при вводе неправильного кода пишет, что введён неправильный код, но при вводе правильного кода не происходит вообще ничего..... smile   Такое впечатление, что скрипт не знает, что ему делать дальше. smile 

Автор: SneG0K 28.6.2011, 02:48
Код

if ($status != "<br>")
{
    echo $status;
}
    exit();
}


Код

if ($status != '<br>') {
    echo $status;
    exit();
}

Мммм?

Автор: berdini 28.6.2011, 09:34
Ура!!! Получилось! smile 
Только писать надо было не:
Код

if ($status != '<br>') {
    echo $status;
    exit();
}


А:

Код

  if ($status != "<br>")
   {
        echo $status;
        exit();
    }
   }


И всё заработало! smile 

Спамерам вечный бой!

Автор: SneG0K 28.6.2011, 12:37
Молодец!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)