Наткнулся на баг.
К примеру есть страничка, с таким куском кода:

Выделить код

Код:

<script language="">
function onload_() {
blablabla=1;
}
</script>
<body onload="onload_()">
<?php
session_start();
$_SESSION['time'] = time();
print_r($_SESSION);
?>
</body>

И другая страничка:

Выделить код

Код:

<?php
session_start();
print_r($_SESSION);
?>

В первом случае print_r выведет реальное время, а вот на второй страничке уже с небольшой дельтой.
Это происходит, потому что onload не понятно по каким причинам перезагружат страничку еще раз, в следствие чего переменные сессии генерятся еще раз.
И еще: при повторной загрузке первой страницы теряются переменные $_POST.

Считаю, что это очень большой баг.

ЗЫ: Сорри, не знал куда бросить тему. Искренне надеюсь, что модер кинет ее в нужный раздел.

не просёк в чём проблема. onload страницу не перегружает. если у тебя другие данные - приведи http логи.

==> Разработка

Выделить код

Код:

alik@dev:~/public_html/test$ cat index.php
<?php
session_start();
?>
<body onload="view_pic()">
<script language="javascript">
        function view_pic() {
                document.pic.src='index2.php';
        }
</script>
<?php
$_SESSION['time'] = time();
print_r($_SESSION);

for($i =0; $i < 100; $i++) {
        for($j = 0; $j < 500; $j++)
                echo "bla";
        echo "<br />";
}

?>
<img name="pic" src="">
</body>
alik@dev:~/public_html/test$ cat index2.php
<?php

session_start();
print_r($_SESSION);

?>
alik@dev:~/public_html/test$

Вместо

Выделить код

Код:

for($i =0; $i < 100; $i++) {
        for($j = 0; $j < 500; $j++)
                echo "bla";
        echo "<br />";
}

можно вставить любой текст, который будет генериться больше 1 секунды.

Apache/1.3.33 Ben-SSL/1.55 (Debian GNU/Linux) пишет

10.100.111.22 - - [20/Oct/2006:20:09:48 +0400] "GET /~alik/test/index.php HTTP/1.1" 200 210 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7"
10.100.111.22 - - [20/Oct/2006:20:09:49 +0400] "GET /~alik/test/index.php HTTP/1.1" 200 210 "https://localhost/~alik/test/index.php" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7"
10.100.111.22 - - [20/Oct/2006:20:09:49 +0400] "GET /~alik/test/index2.php HTTP/1.1" 200 47 "https://localhost/~alik/test/index.php" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7"

alik
Минимально проблемный код мне удалось сократить до 12 символов:

Выделить код

Код:

<img src="">

:)

Из чего становится понятно, откуда ноги у лишнего запроса растут - Firefox просто пытается подгрузить картинку, а т.к. атрибут src пустой, то он берёт адрес текущей страницы (по аналогии с пустым action="" у форм).

Достаточно просто убрать атрибут src, и второго запроса идти не будет.

Yan, круто. Ты был прав.

Похоже на Bug 225554 - page loaded twice if contains <img HEIGHT="5" WIDTH="100%" SRC=""> (empty src attribute)