Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2017, 19:52   #1
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье Как удалить или обновить сессию ?

Подскажите пожалуйста, как обновить, или удалить сессию каптчи, при отправки данный формы?
Я делаю так:

Страница с формой:

PHP код:
include("captcha/session_start.php");
.....
<img id="captcha" src="./reg/captcha/?<?php echo session_name()?>=<?php echo session_id()?>">
<p id="reloadcaptcha">Показать другой код</p>

<label id="label-captcha">Код с картинки</label>
<span class="star-captcha">*</span>
<input type="text" name="reg_captcha" id="reg_captcha" value="" />
Обработчик формы:
PHP код:
    include("captcha/session_start.php");
......
    if(isset(
$_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] != $_POST['reg_captcha']){$error[] = "Неверный код с картинки!";}
           unset(
$_SESSION['captcha_keystring']);
           
// Unset все переменные сессии.
           
$_SESSION = array();
           
// Наконец, разрушить сессию.
            
session_destroy(); 
Запуск сессии, session_start.php:

PHP код:
session_start(); 

Последний раз редактировалось Женя32; 04.01.2017 в 19:56.
Женя32 вне форума Ответить с цитированием
Старый 04.01.2017, 20:11   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так и в чем проблема?

А SQL причем?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.01.2017, 20:31   #3
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Так и в чем проблема?

А SQL причем?
Извиняюсь за свою невнимательность..... Я не в том раздели создал тему... Если можно, пусть модераторы переместят тему в нужный раздел.....

Проблема в том, что после отправки данных, сессия не уничтожается....
Женя32 вне форума Ответить с цитированием
Старый 04.01.2017, 20:39   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

http://phpfaq.ru/sessions
Andkorol вне форума Ответить с цитированием
Старый 05.01.2017, 19:30   #5
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Я прочитал эту, и другие статьи...
Я Все делаю так, как там написано...
Там написано, что session_start достаточно указать на одной страницы... Я все так и сделал... После проверки кода с картинки, я указал ниже указанные функции, но сессия все ровно не уничтожается.. Почему так?

PHP код:
    if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] != $_POST['reg_captcha']){$error[] = "Неверный код с картинки!";}
           unset(
$_SESSION['captcha_keystring']);
              
session_unset();
            
session_destroy();
            
$_SESSION = array(); 
Женя32 вне форума Ответить с цитированием
Старый 05.01.2017, 22:48   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Для начала – с чего вдруг такой вывод, что сессия не изменяется, или данные в ней не уничтожаются?
Я не вижу никакого проверочного кода – только голословную истерику по этому поводу.
Andkorol вне форума Ответить с цитированием
Старый 06.01.2017, 12:06   #7
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Для начала – с чего вдруг такой вывод, что сессия не изменяется, или данные в ней не уничтожаются?
Я не вижу никакого проверочного кода – только голословную истерику по этому поводу.
Вывод сделан из следующего...

В обработчики стоит вот такая проверка, на правильность введенного кода каптчи, если код неправильный, обработчик возвращает ошибку. Когда я намеренно ввожу не правильный код, то так и происходит:

PHP код:
if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] != $_POST['reg_captcha']){$error[] = "Неверный код с картинки!";} 
Сразу после этой проверки в обработчики, идут функции разрушения и уничтожения переменных сессии, и самой сессии:

PHP код:
unset($_SESSION['captcha_keystring']);
                 
session_destroy(); 
        
session_unset(); 
        
session_unregister();
                
$_SESSION = array(); 
И по логике должно быть так: Когда пользователь, после отправки данных, нажимает кнопку "Назад", код каптчи должен быть не действительным..., но этого не происходит, иначе бы выводилось сообщения об ошибки: "Неверный код с картинки!".
Женя32 вне форума Ответить с цитированием
Старый 06.01.2017, 13:10   #8
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Это всё пустые домыслы.
Проверка осуществляется простейшим способом – выводом переменой из сессии на экран.
После отправки формы не должно быть никаких «Назад»:
– если данные прошли валидацию – должен выполняться редирект на страницу «успеха» (чтобы избежать повторной отправки формы при возможном обновлении страницы)
– если данные не прошли валидацию – должен выполняться редирект на страницу с формой, с заполненными ранее полями (введённые данные можно передать через сессию) + сообщения о выявленных при валидации ошибках + обновлённая каптча
Andkorol вне форума Ответить с цитированием
Старый 06.01.2017, 16:19   #9
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Это всё пустые домыслы.
Проверка осуществляется простейшим способом – выводом переменой из сессии на экран.
После отправки формы не должно быть никаких «Назад»:
– если данные прошли валидацию – должен выполняться редирект на страницу «успеха» (чтобы избежать повторной отправки формы при возможном обновлении страницы)
– если данные не прошли валидацию – должен выполняться редирект на страницу с формой, с заполненными ранее полями (введённые данные можно передать через сессию) + сообщения о выявленных при валидации ошибках + обновлённая каптча
Понял! Спасибо большое!
Женя32 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23
Как обновить капчу (или canvas) без ajax Yan9 JavaScript, Ajax 4 12.10.2015 17:38
как удалить созданную тему или хотя бы вложение свое? dasmeer Помощь студентам 1 14.03.2010 00:19
обновление в блоге - Решение задач: как программе удалить саму себя или как изменить название исполняемог Pblog Обсуждение статей 0 27.06.2009 23:20
Как обновить\перерисовать рисунок на форме или компоненте? Selebro Общие вопросы C/C++ 1 21.12.2008 21:16