Войти

Показать полную графическую версию : Форма обратной связи отпраляет сообщение со второго раза


svp
28-02-2017, 09:42
Здравствуйте Уважаемые!
Решите пожалуйста проблему. Сам я с php. мягко говоря, не очень.
На сайте (на htm) есть форма обратной связи (обработчик на php, сама форма и страницы: ошибка, сообщение отправлено - на htm).
Когда все поля формы заполнены, вводится код в окно капчи и с первого раза сообщение не отправляется, если снова вернуться в форму и ввести новую капчу (старая обновилась), то все нормально, сообщение уходит и теперь пока на сайте, то сообщения со всех страниц отправляются сразу и сколько хочешь.
Но при первом заходе на сайт или после его закрытия, а потом снова открытия, то все повторяется снова. Т.е. форма отправляет сообщение только со второго раза.
Но если при первом заходе обновить страницу формы (Ctrl+F5), то все нормально, сообщение уходит сразу.
Где-то нашел, что надо в .htaccess добавить строку для автостарта сессии php:
php_value session.auto_start 1
Но это ни чего не дало - отправляет только со второго раза.
Отключил капчу и все стало работать нормально. Значит скорее всего проблема в файле index.php, который отвечает за капчу и расположен в папке captcha
Сам сайт fаnаtgusyаtnik.ru
Помогите (исправьте) пожалуйста эту проблему.
Если надо, то скажите какие еще файлы выложить.
Сам index.php:
<?php

error_reporting (E_ALL);

/* Using:

<?php
session_start();
?>
<form action="./" method="post">
<p>Enter text shown below:</p>
<p><img src="PATH-TO-THIS-SCRIPT?<?php echo session_name()?>=<?php echo session_id()?>"></p>
<p><input type="text" name="keystring"></p>
<p><input type="submit" value="Check"></p>
</form>
<?php
if(count($_POST)>0){
if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){
echo "Correct";
}else{
echo "Wrong";
}
}
unset($_SESSION['captcha_keystring']);
?>

*/

include('kcaptcha.php');

if(isset($_REQUEST[session_name()])){
session_start();
}

$captcha = new KCAPTCHA();

if($_REQUEST[session_name()]){
$_SESSION['captcha_keystring'] = $captcha->getKeyString();
}

?>

svp
28-02-2017, 13:27
Все. Проблема решилась.
На одном из форумов написали мне код для этого index.php:

<?php
error_reporting (E_ALL);
session_start();
include('kcaptcha.php');
$captcha = new KCAPTCHA();
$_SESSION['captcha_keystring'] = $captcha->getKeyString();
?>

Заменил и все стало нормально.
Всем спасибо.




© OSzone.net 2001-2012