Всем добрый день! Вопрос у меня следующий - существует непонятная мне ошибка в работе с куки. То ли я что-то делаю не так, то ли.... Короче говоря описываю с самого начала. Существует сайт. На этом сайте есть страница dt_05. Вот листинг: PHP: <?php?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"> <html> <head> <!-- Заголовок окна --> <title>фывапролдж.</title> <!-- Подключаем внешние скрипты --> <script src="http://www.navtest1.ru/js/func.js"></script> <!-- Используем русскую кодировку --> <meta http-equiv="content-type" content="text/html; charset=Windows-1251"> <!-- Подключаем стилевые файлы --> <link rel="stylesheet" type="text/css" href="styles/stylenavtest1.css"> </head> <body onload="StartUpdateTheImage('im_Main', 5000)"> <!-- ********************************************************** --> <?php echo ($ppp); require("header2.php"); ?> <!-- ********************************************************** --> <td> <!-- Описание текста центральной ячейки --> <img id="im_Main" alt="ывапрол." src="data/dt_05/imcreate_05.php" width="581" height="581" hspace="10" vspace="10" border="0"> <!-- Конец описания текста центральной ячейки --> </td> <?php require("footer.php"); ?> На этой странице есть изображение id="im_Main", которое обновляется JS-функцией StartUpdateTheImage из подключаемого внешнего скрипта. Обращение к функции происходит многократно через определённый промежуток времени по событию onLoad тега BODY. Вот листинг функции: [js]function StartUpdateTheImage(imname, updtime) { var img = document.getElementById(imname); if (!img) return; var src = img.src; // исходный урл // если там уже есть вопрос, то &rnd= иначе ?rnd= src += (src.indexOf('?') >= 0 ? '&' : '?') + 'rnd='; setInterval(function(){ img.src = src + Math.floor(Math.random() * 1000000); }, updtime); // через updtime мс. }[/js] Непосредственно файл изображения - рнр-скрипт imcreate_05.php, который производит вычисления и по ним генерит изображение. Его путь относительно страницы data/dt_05/imcreate_05.php. Вот его листинг (только то, что относится к проблеме): PHP: <?php header ("content-type: image/png"); // //Генерация изображения $img = imagecreate (581,581) or die ("Не удаётся инициализировать новый поток изображения."); $bgcolor = imagecolorallocate ($img, 0, 0, 0); // фоновый цвет $LScolor = imagecolorallocate ($img, 0, 255, 100); // цвет линий шкалы $textcolor = imagecolorallocate ($img, 233, 14, 91);// цвет текста $fn = 3; // Номер шрифта $fh = imagefontheight($fn); // высота шрифта $fw = imagefontwidth($fn); // ширина шрифта // //Рисуем линии imageline ($img, 5, 290, 575, 290, $LScolor); imageline ($img, 290, 5, 290, 575, $LScolor); // //Рисуем значения шкал линий imagestring ($img, $fn, 293, 20, "0", $LScolor); imagestring ($img, $fn, (560 - (2 * $fw) - 1), 290, "90", $LScolor); imagestring ($img, $fn, (290 - (3 * $fw) - 1), (560 - $fh), "180", $LScolor); imagestring ($img, $fn, 23, (290 - $fh), "270", $LScolor); // //Получаем случайное число - то, которое пришло из JS - используется для тестирования. $rnd = $_REQUEST['rnd']; //Если его ещё нет - обнуляем куки if ( !$rnd ) { setcookie ( 'GloX', '', time() - 1 ); $rnd = 999; } //Вычисления, не относящиеся к проблеме. //Проверка наличия куки if ( !$_COOKIE['GloX'] ) { $Status = "no"; $GloX = array(); } else { $Status = "yes"; imagestring ($img, 1, 200, 200, unserialize ( $_COOKIE['GloX'] ), $textcolor); // это тестовая строка $GloX = unserialize ( $_COOKIE['GloX'] ); } $count = count($GloX); $GloX[$count] = $rnd; // можно, конечно, короче: $GloX[] = $rnd; , но на этапе тестирования мне так удобней //Выводим текст imagestring ($img, 1, 5, 15, "Used COOKIE", $textcolor); imagestring ($img, 1, 5, 25, "Status", $textcolor); imagestring ($img, 1, 50, 25, $Status, $textcolor); imagestring ($img, 1, 5, 35, "GloX", $textcolor); imagestring ($img, 1, 50, 35, $GloX[$count], $textcolor); imagestring ($img, 1, 5, 45, "rnd", $textcolor); imagestring ($img, 1, 50, 45, $rnd, $textcolor); //Вывод массива imagestring ($img, 1, 300, 5, "count", $textcolor); imagestring ($img, 1, 340, 5, $count, $textcolor); $vpos = 5; imagestring ($img, 1, 380, 5, "GloX", $textcolor); foreach ($GloX as $i => $value) { imagestring ($img, 1, 420, $vpos, $i, $textcolor); imagestring ($img, 1, 440, $vpos, $value, $textcolor); $vpos += 10; } //Запись в куки setcookie ( 'GloX', serialize ( $GloX ), 0); //Запись этой строки имела различные варианты: //setcookie ( 'GloX', serialize ( $GloX )); //setcookie ( 'GloX', serialize ( $GloX ), 0); //setcookie ( 'GloX', serialize ( $GloX ), time()); //Разницы никакой. //Выводим изображение в браузер imagepng ($img); ?> Что должно быть по идее? Пользователь зашёл на страницу. Произошло первое обращение к imcreate_05.php, который сгенерил картинку и выдал её в браузер. Вот как он должен это делать: Проверка наличия случайного числа $rnd. если его нет - JS ещё не включался и следовательно это первое обращение к рисунку. Обнуляем куки. Проверка наличия куки. Если нет (и не должно быть на этом этапе) - инициализируем пустой массив. После вычислений в конец массива дописывается новое число. Запись в куки обновлённого массива. Через 5 сек JS запускает imcreate_05.php снова Проверка наличия случайного числа $rnd. Оно должно быть. НЕ обнуляем куки. Проверка наличия куки. Если да (и должно быть на этом этапе) - считываем массив данных из куки. После вычислений в конец массива дописывается новое число. Запись в куки обновлённого массива. И так должно происходить до тех пор, пока пользователь на странице. Теперь, что происходит на самом деле. Первое обращение без ЖС. проверка на случайное число - НЕТ Обнуление куки - ДА проверка на куки - НЕТ инициализируется пустой массив - ДА размер массива - 0 в массив вписывается число 999 (тупо для теста) - ДА. элементы: i=0 => Value=999 массив записывается в куки - ДА Второе обращение с ЖС проверка на случайное число - Да проверка на куки - Да считывается массив - ДА размер массива - 1 в массив вписывается число rnd - ДА. элементы: i=0 => Value=999; i=1 => Value=rnd1; массив записывается в куки - !!! НЕИЗВЕСТНО !!! Третье обращение с ЖС проверка на случайное число - Да проверка на куки - Да считывается массив - !!! НЕИЗВЕСТНО !!! размер массива - 1 в массив вписывается число rnd - ДА. элементы: i=0 => Value=rnd2; массив записывается в куки - !!! НЕИЗВЕСТНО !!! Для меня такая ситуация непонятна. Помогите разобраться, пожалуйста.