Помощник
|
Сравнение сессионных переменных |
cap4369
|
Сообщение
#1
|
||
|
|
||
|
|||
matroskin8 |
11.11.2013, 23:26;
Ответить: matroskin8
Сообщение
#2
|
|
Ну так в $_SESSION['res_captcha'] должно записываться значение сложения двух сгенерированных чисел, а в $_SESSION['captcha'] (кстати, совсем неясно зачем сохранять ответ пользователя???) - то, что пришло из формы... если ответ из формы не совпадает с тем, который сохранен в $_SESSION['res_captcha'], то и получим несовпадение.
то есть при нажатии кнопки отправки сообщения меняется сессионная переменная $_SESSION['res_captcha'] и результат введенный мной в поле input естественно уже не равен новому значению. Быть того не может или вы показываете не весь код... когда нажата кнопка формы мы попадаем в условие if($_POST['submit']) и до проверки if($captcha != $_SESSION['res_captcha']) сессионная переменная $_SESSION['res_captcha'] нигде не переназначается. Вообще, можно было бы прикрепить скрипт с формой в архиве, чтобы можно было провести его дебаг, поскольку вот так вот искать ошибки в коде без дебага - это совсем неправильно. P.S. Кстати, а почему бы не задать вопрос по скрипту его автору? |
|
|
cap4369
|
Сообщение
#3
|
|
Спасибо за ответ. Код обработчика указан выше называется mail.php(для атрибута action), он приведен полностью. Вот код формы mail_index.php:
<?php include "config.php"; session_start(); include "mail.php";// Для вывода капчи print_r($_SESSION);// Для проверки ?> <div class="form_mail"> <form method="post" action="<?=$site_url?>classes/mail.php"> <table cellspacing="20"> <tr> <td><span id="red_star">*</span> Имя:</td> <td><span><input type="text" name="name" maxlength="20" size="25" value="<?=$_SESSION['name']?>" /></span></td> </tr> <tr> <td><span id="red_star">*</span> Ваш Email:</td> <td><span><input type="text" name="mail" maxlength="20" size="25" value="<?=$_SESSION['mail']?>" /></span></td> </tr> <tr> <td> <span id="red_star">*</span> Сообщение:</td> <td><span><textarea cols="45" rows="5" name="text"><?=$_SESSION['text']?></textarea></span></td> </tr> <tr> <td>Введите ответ: <br /><h3><?=$a?> + <?=$b?> = ? <?=$_SESSION['res_captcha']?></h3></td> <td><span><input type = "text" name = "captcha" /></span></td> </tr> <tr> <td colspan="2"><p class="form_mail_submit"><input type="submit" name="submit" value="Отправить сообщение"></p></td> </tr> </table> </form> <p class="message"><?=$_SESSION['res']?><p> </div><!-- #mailform --> <?php session_unset(); session_destroy(); ?> И еще, вообще- то меня смущает то, что я в файле формы в начале сделал include "mail.php"; так как в форме переменные $a, $b и $_SESSION['res_captcha'] не выводятся. Но я пробовал ввести код генерации капчи в форму, перед соответствующим инпутом, от этого ничего не меняется. |
|
|
matroskin8 |
12.11.2013, 1:47;
Ответить: matroskin8
Сообщение
#4
|
|
Вот почему бы внимательнее не прочесть то, что писалось выше?:
можно было бы прикрепить скрипт с формой в архиве, чтобы можно было провести его дебаг Старайтесь сделать так, чтобы помогающим вам, эта помощь доставляла как можно меньше хлопот... если бы вы прикрепили скрипт в архиве, то мне бы осталось лишь распаковать его и запустить... а так получается, что мне нужно создавать файлы, копировать в них код, сохранять их где-то... благо всего этого делать не пришлось, поскольку ошибка видна сразу. Вот смотрите, в файле mail.php переменной $_SESSION['res_captcha'] присваивается значение капчи. А чуть ниже в файле с формой это самое значение благополучно удаляется вот этими вот двумя строками: <?php session_unset(); session_destroy(); ?> Получается, что в сессионной переменной больше ничего нет... да и самой переменной нет... вот и вся ошибка. Решение просто: 1) либо удаляйте только ненужные переменные сессии, т.е. вместо session_unset(); session_destroy(); пишем так: <?php unset($_SESSION['res']); unset($_SESSION['name']); unset($_SESSION['mail']); unset($_SESSION['text']); unset($_SESSION['captcha']); //session_unset(); //session_destroy(); ?> 2) либо сделайте так, как это сделал автор скрипта: используйте не просто сессионные переменные, а сессионный массив: $_SESSION['res']['name']; $_SESSION['res']['email']; // и т.д. значение капчи в этот массив, конечно же, не записываем и можем оставить все той же переменной. Ну а в конце просто удаляем весь сессионный массив: unset($_SESSION['res']);
|
|
|
cap4369
|
Сообщение
#5
|
|
Спасибо за помощь. Я действительно делал этот скрипт по бесплатным урокам вашего сайта, очень хороший сайт, только вот проблема, я на нем зарегистрирован, но почему- то создавать темы не могу. Может потому что не являюсь клиентом, то есть не приобретал платных курсов? К сожалению, я пенсионер по инвалидности и не могу себе позволить покупку курсов, хотя понимаю, что они мне очень нужны, приходится довольствоваться тем, что есть. Но и бесплатных уроков вполне достаточно. В них все доходчиво и подробно рассказывается и показывается, с разъяснением почему так, а не иначе. Я считаю, что в рунете это лучший сайт по самостоятельной разработке веб приложений.
А то что я не прикрепил скрипт в архиве, то я просто не знал как, только потом разобрался, что надо было воспользоваться расширенной формой. Сейчас займусь созданием шумового фона и изменением шрифта тоже нелегкая тема. Подскажите, следует создавать отдельный php файл и подключать его атрибутом src, или можно продолжать писать код в генерации капчи? |
|
|
matroskin8 |
12.11.2013, 13:27;
Ответить: matroskin8
Сообщение
#6
|
|
проблема, я на нем зарегистрирован, но почему- то создавать темы не могу Странно... такого быть на самом деле не должно. Можете написать в наш саппорт с указанием логина, под которым зарегистрированы, и мы разберемся почему так. Сейчас займусь созданием шумового фона и изменения шрифта тоже нелегкая тема. Подскажите, следует создавать отдельный php файл и подключать его атрибутом src, или можно продолжать писать код в генерации капчи? А как угодно, тут уже решать вам, как лучше... если не ошибаюсь, то урок по созданию капчи с шумом должен быть на сайте - можно взять алгоритм реализации из него. |
|
|
cap4369
|
Сообщение
#7
|
|
Спасибо, сейчас зайду на Ваш сайт поищу, ну и напишу, что у меня проблема с созданием тем на форуме. Очень приятно с Вами общаться, даже настроение приподнятое появилось от того, что есть такие небезразличные люди, готовые прийти на помощь. Еще раз благодарю и удачи Вам!
|
|
|
matroskin8 |
12.11.2013, 15:38;
Ответить: matroskin8
Сообщение
#8
|
|
|
Пожалуйста.
И Вам удачи!
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
ExchangeRates.Pro: сравнение цен Bitcoin/Crypto обменников, бирж, P2P рынка 🚀 Поможем найти лучшие цены на обмен 34 криптовалют в 255 странах |
8 | ExchangeRatesPro | 3126 | 12.2.2020, 18:46 автор: ExchangeRatesPro |
|
Сравнение 2-х страниц на одну тему | 1 | rad_mw | 1056 | 28.6.2018, 18:27 автор: Napoleon-007 |
|
Php - скрипт. Сравнение строк в csv файлах | 2 | PoliteX | 2494 | 21.7.2015, 11:50 автор: PoliteX |
|
Сравнение на основе регулярных выражений. Бюджет 40 евро. | 5 | Nickondr | 4759 | 1.10.2011, 23:15 автор: -Webmaster- |
Текстовая версия | Сейчас: 19.4.2024, 19:24 |