Мне нужно установить динамический идентификатор для каждой загрузки документа. Этот идентификатор должен быть установлен в PHP. Теперь, когда я установил session_start()
код php будет выполнен дважды, поскольку ID-код в сгенерированном источнике документа отличается от того же кода в переменной сценария с предупреждением. Нет ошибок во время выполнения.
Что не так с этим кодом и как я могу предотвратить повторный запуск сеанса моего кода после session_start()
?
И когда код будет выполнен дважды (var idvar содержит другое значение), почему, черт возьми, оповещение выполняется только один раз?
Я упростил сценарий, чтобы вы могли попробовать сами:
<?php
// Session start generates two different ID's
session_start();
// Create ID
$time = microtime(1);
$parts = explode('.', (string)$time);
$idvar = strtoupper(strrev(dechex($parts[0]) . dechex($parts[1]))) . dechex(rand());
?>
<script>
// Contains a new generated ID after session_start()
var IDvr = '<?php print $idvr; ?>';
alert(IDvr);
</script>
Скриншоты:
Попробуйте переместить инициализацию id непосредственно перед session_start()
Я подозреваю, что это связано с тем, как вещи выполняются в PHP после session_start()
,
Я нашел это:
PHP Session хранит поведение в переменных?
Но даже когда я добавляю значок на страницу, он не работает. Также страница является автономной и не включена, как требуется на другой странице.
Даже это не работает!
// Session start generates two different ID's
if(!isset($_SESSION) && !isset($idvr)) {
session_start();
// Create ID
$time = microtime(1);
$parts = explode('.', (string)$time);
$idvr = strtoupper(strrev(dechex($parts[0]) . dechex($parts[1]))) . dechex(rand());
}
Обновить:
Сейчас исправлено:
При инициализации view-source: pgname и сеанса код будет снова выполнен в режиме просмотра исходного кода!