Акция!  Домен 34 грн, домен 55 грн, домен  - 200 грн домен  - 65 грн, домен  - 99 грн, домен  - 56 грн!, домен  - 425 грн!
Мы используем cookie-файлы
Для оптимизации работы нашего сайта мы используем cookie-файлы. Продолжая использовать сайт, Вы соглашаетесь с использованием cookie-файлов.
  • RUB
  • USD
  • EUR
  • UAH
Чат техподдержки
Вы являетесь клиентом?
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепр
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 170-15-42  Life
  • +38(067) 400-88-44  Киевстар
  • +38(095) 630-90-82  MTC
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

Хостинг. Хранение проверочного кода в файле сессии

Форумы Хостинг Хранение проверочного кода в файле сессии
OMTC
5 лет
хостинг: есть
домен: есть
Хранение проверочного кода в файле сессии
Вот простой скрипт:

<?php
session_start();
$cod = rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9);
echo '<!DOCTYPE HTML><html><head></head><body><center><br><br>';
echo 'new cod - '.$cod;

echo '<hr><br>session cod - '.$_SESSION['cod'];
echo '<br>POST cod - '.$_POST['cod'];

echo '<br><br><form method="post" action="">';
echo '<input id="cod" type="text" name="cod" size="5" maxlength="5">';
echo '<input value="post" type="submit">';
echo '</form>';


echo '</body></html>';
$_SESSION['cod'] = $cod;
?>


По идее ( и на моих серверах именно так ) все правильно. Стартуем сессию, генерируем код, показываем на форме, сохраняем код в сессионном файле.
На клиенте должны видеть два одинаковых кода: пришедший по ПОСТ и ранее сохраненный в сессии.
А тут вижу совсем другую картину, код в сессии тот же, что и отображаемый на странице, и естесстно пришедший код с формы клиента не совпадает с кодом, хранящимся в сессии. Вроде как переменную $cod пихаю в сессию вначале, до вывода на клиента, а не в конце.
Такое впечатление, что сначала отрабатываются все операции с сессией, а потом инфа отдается клиену.
Как решать такую проблему? Такое только у меня?
OMTC
5 лет
хостинг: есть
домен: есть
Попробовал вместо сессии сохранять код просто в файл - все работает.
Что за трабла?????
Ведь при таком раскладе капчи здесь ваще работать не будут, или формирование кода и его проверку нада в разных скриптах делать ( по разным страницам )?
OMTC
5 лет
хостинг: есть
домен: есть
1
Странно ващета, но уже все работает ( код тот же, прошло 40 мин )
Единственно что сделал - отключил в настройках php.ini в панельке управления буферизацию вывода, но по идее это не должно влиять :(

Ну вроде все, тема закрыта
Приятно было с собой пообщаться :)
Если еще встречу свой пост, обязательно отвечу.
Илья
5 лет
хостинг: есть
домен: есть
3
У Вас каждый раз код должен быть разный так как с точки зрения PHP код выглядит так:
session_start();
$cod = rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9);
$_SESSION['cod'] = $cod;


или даже так:

session_start();
$_SESSION['cod'] = rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9);


Какое бы значение в $_POST вы не передавали оно не присваивается переменной $cod.
OMTC
5 лет
хостинг: есть
домен: есть
-3
Я чет совсем в шоке, в первом посту не тот код, который я выставлял!!!!!!! Че за бред и кто это делает?
А главное - зачем? Походу былоб не плохо админам на это дело обратить внимание!!!!!!
Вот код, который я выставлял:
========================================================================
<?php
session_start();
$cod = rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9);
echo '<!DOCTYPE HTML><html><head></head><body><center><br><br>';
echo 'new cod - '.$cod;

echo '<hr><br>session cod - '.$_SESSION['cod'];
echo '<br>POST cod - '.$_POST['cod'];

echo '<br><br><form method="post" action="">';
echo '<input id="cod" type="text" name="cod" size="5" maxlength="5">';
echo '<input value="post" type="submit">';
echo '</form>';


echo '</body></html>';
$_SESSION['cod'] = $cod;
?>

=========================================================================
И с алгоритмом все в поряде, сгенерированный $cod попадает в файл сессии после того, как
ушел клиенту в браузер. Попадание посланного по ПОСТ кода в $cod не предусматривается, это просто тест, который показывает что и в каких переменных находится на момент сравнения.
Сравнение ( проверка кода в сессии и пришедшего с формы ) подразумевается сразу после старта сессии.
Работу этого кода можно лицезреть тут http://test.omtc.com.ua/test/
вписываем в очко new cod - и лицезреем переменные на момент сравнения.
Может какой глюк был с серверами, ктож признается :)
А может действительно дело в буферизации было :( (хотя мозг эту зависимость отвергает)

P.S. У меня небывает неработающего кода! :)
OMTC
5 лет
хостинг: есть
домен: есть
Ну ты глянь, просто чудеса, и код в первом посту уже стал нормальным :)
seryoga89
5 лет
хостинг: есть
домен: есть
1
А дело очень даже может быть в буферизации.

Без буферизации вывода каждая команда echo выводит в браузер данные сразу как только встречается в коде, т.е. строка
echo '<hr><br>session cod - '.$_SESSION['cod'];

выведет код сгенерированный при прошлой загрузке страницы.

Если же буферизация включена, то все вызовы echo будут проигнорированы до тех пор пока скрипт не закончит свою работу. Таким образом
$_SESSION['cod'] = $cod;

будет выполнен раньше, чем произойдет echo, а когда дело дойдет до вывода на экран, то код
echo '<hr><br>session cod - '.$_SESSION['cod'];

выведет уже новое значение кода.

Обратите внимание, при включении буферизации теоретически new cod и session cod на странице будут равны.
OMTC
5 лет
хостинг: есть
домен: есть
Ну... Короче - нада проверить. Щас опять включу буферизацию и через часик посмотрим че выйдет.

seryoga89 - спасибо.
OMTC
5 лет
хостинг: есть
домен: есть
Аннетс!!! Буферизация тута и непричемсь! С ней тоже все работает.
Rock-N-Roll
5 лет
хостинг: есть
домен: есть
Как решать такую проблему? © admin248
вот несколько раз перечитал, а сути вопроса так и не понял. Что Вы пытаетесь сделать?
OMTC
5 лет
хостинг: есть
домен: есть
Суть вопроса ( проблемы ) изложена в первом посту: по скрипту сохранение данных в переменных сессии производилось в конце выполнения скрипта, а получалось так, что сначала отрабатывались все функции, связанные с сессией, а потом все, что связаны с выводом в поток клиенту, не зависимо от расположения в скрипте. Проблема исчезла без объяснений.
Rock-N-Roll
5 лет
хостинг: есть
домен: есть
1
Проблема исчезла без объяснений © admin248
ну так не бывает...

Просто нужно хлопнуть димедрольчика и хорошо выспаца :)
Участвовать в общении на этом форуме могут только
зарегистрированные пользователи.

Если вы уже зарегистрированы Вам необходимо войти на форум.

Тема закрыта по истечению срока давности.