Показать сообщение отдельно
  #2 (permalink)  
Старый 20.12.2016, 09:00
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Еще раз: если механизм сессий работает (сервер стартует сессию, а у клиента включены куки), то браузер сам передает id сессии серверу, таким образом "привязывая" клиента к его сессии. То есть вот это

<?php echo session_name()?>=<?php echo session_id()?>

полная хня, навороченная кем-то не понять для чего. Если сессия умерла, то еще не факт, что по этим генам ее можно воскресить, то есть что она хранила будет утеряно. Значит стартовать новую и для всего. Чей код каптчи используется, свой или же чужой?

Вот это new Date().getTime() для того, что подставляя новое случайное значение в url, заставлять браузер обращаться к серверу, а не к кешу. Если src каптчи, это только код формирующий ее, то важен просто факт обращения к этому скрипту, а session_start() этого скрипта будет продолжать сессию, id которой передает браузер. И вполне достаточно сначала

<img id="captcha" src="./reg/?<?=time()?>">

и обновления:

$('#reloadcaptcha').click(function() {
        var img = $('#captcha')[0];
        img.src = img.src.replace(/\d+/, new Date().getTime())
})


session_start() скрипта обрабатывающего прием формы также продолжает сессию, id которой передает браузер, в которой и хранится код коптчи, который в нее пишет скрипт ее формирующий.

unset($_SESSION['captcha_keystring']); - удаление кода каптчи из сессии должно происходить только после того, как пользователь ввел его правильно.

У вас же где-то все запутано, либо также бездумно где-то unset(), потому и не работает.
Ответить с цитированием