|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
Есть простенькая страничка в начале, которой стоит кусок кода: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Но на практике при получении usname куки остаются пустыми и выводится код 1. Причем, если сразу после setcookie поставить редирект на эту же страницу, то куки появляются. То есть если добавить в код две строки: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Подскажите в чем косяк? [src][/SRC] ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2007, 05:36 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
int setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure]]]]]) setcookie() определяет куку для отправки вместе с остальной header-информацией.Куки обязаны быть отправлены до любых других шапок/headers (это ограничение кук, а не РНР). Это требует, чтобы вы помещали вызовы этой функции перед тэгами <html> или <head>. Все аргументы, кроме name, являются необязательными.Если имеется только аргумент name, кука с этим именем будет удалена с удалённого клиента.Вы можете также заместить любой аргумент пустой строкой (""), чтобы пропустить этот аргумент.Аргументы expire и secure это целые числа/integer и они не могут быть пропущены с помощью пустой строки. В них используйте нуль (0).Аргумент expire это обычное Unix time integer, возвращаемое функциями time() или mktime().Аргумент secure указывает, что данная кука должна передаваться только через секретное HTTPS-соединение. После того как куки установлены, доступ к ним может быть получен при загрузке следующей страницы через массив $_COOKIE (который вызывается $HTTP_COOKIE_VARS в версиях PHP до 4.1.0). Обычные ловушки: * Куки будут невидимы до тех пор, пока не будет загружена следующая страница. * Куки обязаны быть удалены с теми же параметрами, с которыми были установлены. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2007, 12:51 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
То есть это нормальное их поведение, и возможно стоит сделать просто промежуточную страницу, которая устанавливает куки? Все заголовки у меня идут после setcookie ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2007, 15:47 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
угумс ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2007, 15:56 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
если так хочется чтобы были доступны сразу, то после своего сеткуки сделай еще и Код: plaintext 1. 2. 3.
не используй автоматический register_globals -- когда тебе нужно пиши $_COOKIE['user_name'], а не $user_name _______________________________________ 2pro4U ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2007, 15:58 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
Frenzy не используй автоматический register_globals -- когда тебе нужно пиши $_COOKIE['user_name'], а не $user_name _______________________________________ 2pro4U А почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2007, 03:39 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
потому что не секурно это... и register_globals уже использовать нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2007, 12:04 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
имхо, тут надо минять алгоритм работы. потому как куки нужны что бы получать некоторые значения В ПОСЛЕДУЮЩИХ обращениях клиента к серверу. если же они край нужны для ТЕКУЩЕГО (то есть первого) - что то тут не так... --------------------------------------------------- Я не волшебник, я только учусь.... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2007, 12:16 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
Добрый день! У меня наверное такая же проблема. Не буду много расписывать код, так расскажу: 1. В коде JS через AJAX отправляю запрос к файлу 1.php, который устанавливает переменную сессии $_SESSION['name'] = 1234. 2. В этом же коде JS через AJAX отправляю запрос файлу 2.php, которые читает переменную сессии $_SESSION['name']. В результате получаю: Переменную $_SESSION['name'] файл 2.php может прочитать только после F5 в браузере (перезапуска страницы). Настройки никакие не менял. Они стандартные в LAMP. Т.к. переменная со второго раза все же читается, то делаю вывод, что сессии и куки все же работают. Не могу понять почему со второго раза? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2017, 05:59 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
Сессию во всех трех файлах стартуете? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2017, 08:43 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
Hett, HettСессию во всех трех файлах стартуете? Сессии конечно стартую. Прочитал в интернете, что запись в куки должны производиться до вывода любой информации в браузер. У меня конечно же информация в браузер выводится до запуска файла 1.php. Но я через JS определяю временную зону ZimeZone браузера, чтобы сохранить её как раз в сессии. И без запуска JS определить временную зону, насколько я знаю, средствами PHP невозможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2017, 10:52 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
приведите фрагмент кода где вы посредством ajax делаете обращение к обоим файлам. Скорей всего вы не учитываете асинхронность, т.е. не можете гарантировать что одно обращение точно сработает после другого. Включите вывод всех сообщений об ошибках и убедитесь, например, в отладчике браузера, что ошибок действительно нет, и нет вывода другой информации, кроме той что ожидаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2017, 16:55 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
sxqприведите фрагмент кода где вы посредством ajax делаете обращение к обоим файлам. Скорей всего вы не учитываете асинхронность, т.е. не можете гарантировать что одно обращение точно сработает после другого. Включите вывод всех сообщений об ошибках и убедитесь, например, в отладчике браузера, что ошибок действительно нет, и нет вывода другой информации, кроме той что ожидаете. Вывод ошибок включен. Файл PHP первый. Реальное имя у него 'timezone.php': Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Файл PHP второй. Реальное имя у него 'ini.php': Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Файл JS, который последовательно вызывает оба файла PHP: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56.
Код библиотеки AJAX, запросы всегда синхронные!: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2017, 07:01 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
Интересно, что я заменил использование $_SESSION, на просто запись в файл на сервере через file_put_contents() и file_get_contents(). Результат тот же. Читает файл только при повторном запуске браузера. При первом проходе выдает ошибку, что файла нет. Хотя он есть и создается нормально после первого запуска страницы. Может проблема в самой операционке Windows... опять кэрование какое-нибудь, отложенная запись на диск... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2017, 07:53 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
Запрос поди кэшируется браузером? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2017, 08:12 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
возможно у вас просто опечатка при копировании сюда кода date_default_timezone_set($_SESSION['TIME_ZONE'); для чистоты эксперимента во втором файле php сделайте просто вывод print_r($_SESSION); и выводите все это в результате ajax в браузере, или в отладчике браузера В отладчике так же посмотрите один и тот же идентификатор сессии передается в заголовках запроса или нет, или просто сделайте вывод в обоих файлах session_id() что бы понять на какой стадии у вас не работает ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2017, 08:20 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
sxqвозможно у вас просто опечатка при копировании сюда кода date_default_timezone_set($_SESSION['TIME_ZONE'); для чистоты эксперимента во втором файле php сделайте просто вывод print_r($_SESSION); и выводите все это в результате ajax в браузере, или в отладчике браузера В отладчике так же посмотрите один и тот же идентификатор сессии передается в заголовках запроса или нет, или просто сделайте вывод в обоих файлах session_id() что бы понять на какой стадии у вас не работает Это все делал конечно же: 1) идентификатор сессии тот же. 2) print_r($_SESSION) при первом запуске пишет что такой переменной нет, при втором - выводит все нормально. Я пробовал даже сессии заменить просто на запись в файл на стороне сервера. Первый файл php записывает значение в текстовый файл, следом второй файл php читает. При первом запуске браузера пишет, что такого файла вообще не существует. После перезапуска страницы текстовый файл видит и нормально читает. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2017, 08:49 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
sxqвозможно у вас просто опечатка при копировании сюда кода date_default_timezone_set($_SESSION['TIME_ZONE'); Опечатка только на форуме. Просто код воспроизводил по памяти, опечатался. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2017, 08:51 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
HettЗапрос поди кэшируется браузером? Предлагаете якорь добавить к имени файла? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2017, 08:52 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
Алексей СмирновHettЗапрос поди кэшируется браузером? Предлагаете якорь добавить к имени файла? Я подумал. Нет. Файлы php не кэшируются. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2017, 08:54 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
что бы не гадать на кофейной гуще, откройте отладчик браузера и убедитесь что запросы верно отправляются вместе с заголовками. Там же будет видно, что кешируется что нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2017, 08:56 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
sxqчто бы не гадать на кофейной гуще, откройте отладчик браузера и убедитесь что запросы верно отправляются вместе с заголовками. Там же будет видно, что кешируется что нет. Я запустил отладчик в Mozilla. Сделал точки останова (см. вложение). А где можно посмотреть заголовки? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2017, 09:55 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
весь обмен с серверной частью в разделе "сеть", там и заголовки, и тело запросов и удобоваримый вид передаваемых данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2017, 17:45 |
|
Cookie устанавливаются только после перезагрузки.
|
|||
---|---|---|---|
#18+
В общем я разобрался. Увидел чисто случайно. У меня была ошибка в коде JS и функция передавалась не как функция, а исполнялась сразу, т.к. я ей написал скобки (надо было без скобок). Из-за этого файл 2.php вызывался раньше, чем 1.php. Сессии и куки в итоге нормально передаются через AJAX даже без перезагрузки браузера. Все произошло конечно из-за этих обратных вызовов. Получается, что я не могу пошагово выполнить нужные мне действия, а должен их плести в паутину. Код получается вообще нечитаемым. Естественно - отсюда ошибки, которые трудно увидеть невооруженным глазом. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2017, 08:49 |
|
|
start [/forum/topic.php?fid=23&msg=39438121&tid=1460667]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 145ms |
0 / 0 |