Изменение переменной сеанса PHP между страницами

У меня есть переменная сеанса, которую я задал следующим образом:

<?php $token = md5(uniqid(rand(), true)); session_start(); $_SESSION['token'] = $token; print $_SESSION['token']; ?> 

Затем на другой странице у меня есть следующее:

 <?php session_start(); print $_SESSION['token']; ?> 

Проблема в том, что они не совпадают. Я получаю две совершенно разные строки. register_globals отключен. Я заметил, что когда я устанавливаю md5(....) в константную строку, например: md5('example') , она работает как ожидалось, и две строки совпадают. Но это не имеет значения. Любые идеи о том, что здесь происходит?

EDIT: Журнал доступа к Apache:

 127.0.0.1 - - [18/Sep/2010:17:46:09 -0500] "GET /index.php HTTP/1.1" 200 3182 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.59 Safari/534.3" 127.0.0.1 - - [18/Sep/2010:17:46:09 -0500] "GET /style/style.css HTTP/1.1" 304 - "http://cmb.local:8888/index.php" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.59 Safari/534.3" 127.0.0.1 - - [18/Sep/2010:17:46:09 -0500] "GET /js/signup.js HTTP/1.1" 304 - "http://cmb.local:8888/index.php" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.59 Safari/534.3" 127.0.0.1 - - [18/Sep/2010:17:46:09 -0500] "GET /index.php HTTP/1.1" 200 3182 "http://cmb.local:8888/index.php" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.59 Safari/534.3" 127.0.0.1 - - [18/Sep/2010:17:46:10 -0500] "GET /index.php HTTP/1.1" 200 3182 "http://cmb.local:8888/index.php" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.59 Safari/534.3" 

Я не совсем уверен, как это читать, но мне кажется, что мой файл (index.php, который, как я полагаю, называется «/»), вызывается три раза. Правильно ли я это читаю? Что там происходит?

Related of "Изменение переменной сеанса PHP между страницами"

Полностью глупая ошибка с моей стороны. У меня были некоторые пустые теги <img> , которые вызывали дополнительные запросы. facepalm Извините, все проблемы решены. Спасибо за вашу помощь!!

Единственное решение, о котором я могу думать, это то, что вы делаете второй запрос на первую страницу, не зная об этом. Вероятно, вы должны проверить свой журнал доступа к Apache для этого второго доступа …

Создание простого счетчика запросов было бы еще одним решением для проверки этого:

 $_SESSION['counter'] = isset($_SESSION['counter'])? $_SESSION['counter'] +1 : 0; 

Вы заметите, что каждый раз, когда вы пересматриваете первую страницу, ваша переменная сеанса будет меняться. Поскольку он работает для постоянной строки, например «example», я предполагаю, что вы перейдете на страницу 1, чтобы просмотреть, что там хранится.

Исправление можно проверить, чтобы убедиться, что эта переменная сеанса не установлена, прежде чем вы установите ее снова. т.е.

 <?php session_start(); if(!empty($_SESSION['token'])){ $token = md5(uniqid(rand(), true)); $_SESSION['token'] = $token; } print $_SESSION['token']; ?> 

Этот кусок кода должен работать должным образом.

Выглядит странно. Этот первый фрагмент кода, который сбрасывает токен, должен быть запущен снова каким-то образом.