Первый скрипт начинает сессию и записывает туда время. Этот же скрипт выводит <img src=2й_скрипт>. 2й скрипт пишет значение капчи в сессию, в которую уже (как нам бы хотелось) уже внесено время.
Но, видимо, на самом деле кука с временем еще к моменту обращения ко второму скрипту не установилась. И во втором скрипте начинается новая сессия. Надо посмотреть, в какой момент установка куки происходит.
Если сделать обновление, то уже будет есть сессия и оба скрипта воспользуются одной.
Я так вижу эту картину.
16. Champion - 05 Мая, 2009 - 09:07:10 - перейти к сообщению
17. Stierus - 05 Мая, 2009 - 10:12:55 - перейти к сообщению
Просто у меня в голове такие мысли:
Проблема либо на стороне сервера, либо на стороне клиента.
НА стороне сервера выполнение следующего скрипта не начинается до полного выполнения предыдущего скрипта (первый скрипт выводится пользователю, что бы обратиться к картинке капчи - пользователь должен нажать на кнопку, она только во всплывающем сообщении будет, если потребуется. Тоесть идёт полная отработка скрипта на сервере, только потом, если нужно, новый запрос к серверу за капчей. Ну и то же самое с голосованием, только посмотрев на капчу, пользователь начнет её вбивать, а если он её увидел, значит серверный скрипт отработал) Тоесть к серверу идёт стандартное поочередное обращение.
На стороне клиента у нас открыто 1 окно браузера. Открыто оно при загрузке первого скрипта. Обращение как ко второму за капчей, так и к голосованию - происходит через яваскрипт в том же окне.
Проблема либо на стороне сервера, либо на стороне клиента.
НА стороне сервера выполнение следующего скрипта не начинается до полного выполнения предыдущего скрипта (первый скрипт выводится пользователю, что бы обратиться к картинке капчи - пользователь должен нажать на кнопку, она только во всплывающем сообщении будет, если потребуется. Тоесть идёт полная отработка скрипта на сервере, только потом, если нужно, новый запрос к серверу за капчей. Ну и то же самое с голосованием, только посмотрев на капчу, пользователь начнет её вбивать, а если он её увидел, значит серверный скрипт отработал) Тоесть к серверу идёт стандартное поочередное обращение.
На стороне клиента у нас открыто 1 окно браузера. Открыто оно при загрузке первого скрипта. Обращение как ко второму за капчей, так и к голосованию - происходит через яваскрипт в том же окне.
18. EuGen - 05 Мая, 2009 - 10:24:54 - перейти к сообщению
А через document.cookie пробовали?
+
Первый скрипт, который устанавливает куку, нужно проверить - стандартной отладкой, чтоли. То есть проверять, в каком месте появляется одна кука, и в каком месте появляется нужная непоявляющаяся кука, если все делать правильно (то есть тем способом, который вы пробовали до этого, и который, вроде бы, работает)
Чудес не бывает.
+
Первый скрипт, который устанавливает куку, нужно проверить - стандартной отладкой, чтоли. То есть проверять, в каком месте появляется одна кука, и в каком месте появляется нужная непоявляющаяся кука, если все делать правильно (то есть тем способом, который вы пробовали до этого, и который, вроде бы, работает)
Чудес не бывает.
19. valenok - 05 Мая, 2009 - 12:29:50 - перейти к сообщению
Попробуй добавить session_write_close(); в первый скрипт сразу после записи времени в сессию. И ты так и не сказал. Это во всех браузерах ?
20. Гость - 05 Мая, 2009 - 13:06:31 - перейти к сообщению
EuGen Да в данном случае исходный метод автора вооще не хорош - cookie устанавливаются с помощью PHP а запросы страниц ajaxовые вот поэтому cookie реально не устанавливаются
И общий совет напоследок - если у вас реально не обновлющаяся станица устанавливает cookie и делать ajaxоподобные запросы то лучше использовать схему чтотот типа document.cookie чтобы cookie реально обновлялись при запросе
И общий совет напоследок - если у вас реально не обновлющаяся станица устанавливает cookie и делать ajaxоподобные запросы то лучше использовать схему чтотот типа document.cookie чтобы cookie реально обновлялись при запросе
21. Champion - 05 Мая, 2009 - 13:14:52 - перейти к сообщению
JustUserR, что значит "реально не обновляющаяся страница", "cookie реально обновлялись", "браузер не устанавлмвает cookie РЕАЛЬНО"
(Добавление)
Точнее, я догадываюсь, что это, но что тогда будет значить "нереально не обновляющаяся страница", "cookie нереально обновлялись", "браузер не устанавлмвает cookie неРЕАЛЬНО"
(Добавление)
Точнее, я догадываюсь, что это, но что тогда будет значить "нереально не обновляющаяся страница", "cookie нереально обновлялись", "браузер не устанавлмвает cookie неРЕАЛЬНО"
22. Гость - 05 Мая, 2009 - 13:40:50 - перейти к сообщению
Champion Посмотрите тему полностью и увидите что под чем подразумевалось
Под реально обновляющейся страницей подразумевается вот что - с помощью HTTP-заголовков в страницу устанавливаются cookie и эта страница делает допустим с помощью ajaxа запросы других страниц котоыре тоже использую эти cookie - то есть страница сама не обновляется но запускает другие страницы - таким же образом понятно что такое реальная установка cookie - это не момент послания HTTP-заголовка с cookie а момент реального обновления страницы (А не запуска дочерних страниц тупем ajaxа) - аналоничным образом понятно что такое реальная установка cookie
А насчет того что вы понаставили НЕ к этим фразам то можно подразумевтаь страницы в которых cookie устанавливаются а потом эта страница обновляется и в ней уже используется обновленная cookie
ЗЫ Вообще все что названо нереальной установкой cookie формально можно назвать буферизационной задержкой установки cookie перед возможностью чтения ее значения из дочерных страниц запрошенных с помощью ajaxа
Под реально обновляющейся страницей подразумевается вот что - с помощью HTTP-заголовков в страницу устанавливаются cookie и эта страница делает допустим с помощью ajaxа запросы других страниц котоыре тоже использую эти cookie - то есть страница сама не обновляется но запускает другие страницы - таким же образом понятно что такое реальная установка cookie - это не момент послания HTTP-заголовка с cookie а момент реального обновления страницы (А не запуска дочерних страниц тупем ajaxа) - аналоничным образом понятно что такое реальная установка cookie
А насчет того что вы понаставили НЕ к этим фразам то можно подразумевтаь страницы в которых cookie устанавливаются а потом эта страница обновляется и в ней уже используется обновленная cookie
ЗЫ Вообще все что названо нереальной установкой cookie формально можно назвать буферизационной задержкой установки cookie перед возможностью чтения ее значения из дочерных страниц запрошенных с помощью ajaxа
23. EuGen - 05 Мая, 2009 - 13:54:35 - перейти к сообщению
Ну или "страница, устанавливающая нереальные куки" - забавно, да и только.
24. Гость - 05 Мая, 2009 - 14:04:44 - перейти к сообщению
EuGen Да можно слова перевирать сколько угодно - смысл все равно остается тем же - и суть исходной проблемы и варианты ее решения в общемто понятны
25. Champion - 05 Мая, 2009 - 14:14:28 - перейти к сообщению
Вот я такую вроде по смыслу похожую штуку накалялкал.
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- 1.php
- <?PHP
- echo 'First script (time)';
- ?>
- <script>
- function getXmlHttp()
- {
- var xmlhttp;
- try {
- xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
- }
- catch (e) {
- try {
- xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
- }
- catch (E) {
- xmlhttp = false;
- }
- }
- if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
- xmlhttp = new XMLHttpRequest();
- }
- return xmlhttp;
- }
- function ajx_send()
- {
- var req = getXmlHttp()
- req.open('GET', '3.php', true);
- req.send('')
- req.onreadystatechange = function() {
- if (req.readyState == 4) {
- if(req.status == 200) {
- document.getElementById('ajx').innerHTML = req.responseText;
- }
- }
- }
- }
- </script>
- <input type=button onclick=ajx_send()>
- <img src=2.php>
- <div id=ajx></div>