Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: переменная передаётся через сессию со второго раза

Сообщения:  [1-10]    [11-20]  [21-27] 

 
 автор: sim5   (02.04.2010 в 15:08)   письмо автору
 
   для: Port_Artur   (02.04.2010 в 14:48)
 

В файле обработчике чего? Проверки каптчи? А зачем при проверке каптчи записывать в $_SESSION['cap'] что-то? Обработчик читать ее должен и сравнивать, а записывать значение в эту переменную должен ТОЛЬКО скрипт формирующий каптчу.

  Ответить  
 
 автор: Port_Artur   (02.04.2010 в 14:48)   письмо автору
 
   для: sim5   (02.04.2010 в 14:30)
 

В капче лежит переменная
capcha|i:237247;

которая записывается туда файлом создающим изображение капчи. В файле обработчике не удаётся записать туда переменную:
<?
       session_start
();

  
$_SESSION['cap'] = mt_rand(100000,999999);

...


В сессии по прежнему 1 переменная.

Почему так происходит?

  Ответить  
 
 автор: sim5   (02.04.2010 в 14:30)   письмо автору
 
   для: Port_Artur   (02.04.2010 в 14:26)
 

А вы внимательно читаете то, что я вам пишу? А путь к сессии из того что вы представили узнать трудно? Открываейте хоть Блокнотом и смотрите.

  Ответить  
 
 автор: Port_Artur   (02.04.2010 в 14:26)   письмо автору
 
   для: sim5   (02.04.2010 в 14:22)
 

А как в неё заглянуть и в каком месте это лучше cделать?

  Ответить  
 
 автор: sim5   (02.04.2010 в 14:22)   письмо автору
 
   для: Port_Artur   (02.04.2010 в 14:16)
 

Разбирайтесь. Значит она у вас прерывается. Да и заглянуть в нее труда не стоит, вывести текущий id ее тоже, чтобы понять причины.

  Ответить  
 
 автор: Port_Artur   (02.04.2010 в 14:16)   письмо автору
 
   для: sim5   (02.04.2010 в 14:09)
 

session
Session Support     enabled 
Registered save handlers     files user sqlite 
Registered serializer handlers     php php_binary 

Directive    Local Value    Master Value
session.auto_start    Off    Off
session.bug_compat_42    On    On
session.bug_compat_warn    On    On
session.cache_expire    180    180
session.cache_limiter    nocache    nocache
session.cookie_domain    no value    no value
session.cookie_httponly    Off    Off
session.cookie_lifetime    0    0
session.cookie_path    /    /
session.cookie_secure    Off    Off
session.entropy_file    no value    no value
session.entropy_length    0    0
session.gc_divisor    100    100
session.gc_maxlifetime    1440    1440
session.gc_probability    1    1
session.hash_bits_per_character    4    4
session.hash_function    0    0
session.name    PHPSESSID    PHPSESSID
session.referer_check    no value    no value
session.save_handler    files    files
session.save_path    /usr/home/domain/tmp/    /tmp
session.serialize_handler    php    php
session.use_cookies    On    On
session.use_only_cookies    Off    Off
session.use_trans_sid

  Ответить  
 
 автор: sim5   (02.04.2010 в 14:09)   письмо автору
 
   для: Port_Artur   (02.04.2010 в 13:48)
 

Я в который раз вижу у вас подобную чушь:
log.php<?
session_start();
$_SESSION['cap'] = mt_rand(100000,999999);
.....
поэтому и пишу, что у вас полный бардак, и коли вы это понимаете, пора бы уже и человеческий код приводить, а тем более не писать о передаче кода каптчи через форму другому скрипту.

session_start() - не включает сессю (она разрешается в php.ini, и все ее параметры устанавливаются там же), а стартует сессию, или продлевает существующую.

Если у вас не удается получить значение из сессии, то она либо ввобще не работает у вас, либо прерывается, либо, например, истекло время ее жизни, по умолчанию равное 24 мин.

  Ответить  
 
 автор: Port_Artur   (02.04.2010 в 13:48)   письмо автору
 
   для: sim5   (02.04.2010 в 13:31)
 

Да конечно я не гоняю капчу в открытом виде. Я просто взял куски кода для примера. Я передаю из обработчика сообщение об ошибке и значения полей, если какие-то поля заполнены не правильно. После того как обработчик перебрасывает пользователе обратно на форму регистрации формируется новая капча и записывается в сессию для проверки в обработчике со значением, которое пользователь вводит с картинки.
У меня не получается передать переменную из одного файла .php в другой .php.

И что значит "А у вас сам механизм сесси включен?"
Разве это session_start(); не включает механизм сессии?

  Ответить  
 
 автор: sim5   (02.04.2010 в 13:31)   письмо автору
 
   для: Port_Artur   (02.04.2010 в 13:19)
 

А у вас сам механизм сесси включен?

Еще раз - у вас пользователь запросил форму авторизации обратившись к некой странице. На этой странице вы только стартуете сессию, и отдаете форму, в которой помещено изображение каптчи, которое в свою очередь делает запрос к скрипту формирующему каптчу. И уже этот скрипт генерирует код каптчи для изображения, и для записи его в сессию.
Страница проверки формы обрабатывает форму, сверяет введенный пользователем код, с кодом занесенным в сессию скриптом формирующем каптчу.
Если все ОК, то далее устанавливается признак успешного принятия формы, а не гоняется этот код от скрипта к скрипту в открытом виде, как это вы делаете.

Можно одним скриптом отдавать форму пользователю, производить ее проверку, и формировать каптчу, но в этом случае срипт должен быть разбит на логические блоки, которые будут обрабатываться по параметрам запроса к нему. То что вы пишите, это полный абсурд, и как вам еще это объяснить я не знаю.

  Ответить  
 
 автор: Port_Artur   (02.04.2010 в 13:19)   письмо автору
 
   для: sim5   (02.04.2010 в 13:14)
 

Хорошо, если я создаю переменную в файле log.php, почему я не могу её потом извлечь из сесии в файле login.php.

Капча мне нужна для защиты от спамерских программ (типа хрумера).

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-27] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования