САМОУЧИТЕЛЬ PHP 4




Использование самопереадресации - часть 3


Листинг 33.3. Самопереадресация

<?

// Считываем содержимое базы данных.

$Book=@Unserialize(join("",File("book.dat")));

if(!$Book) $Book=array();

// Проверяем, не нужно ли добавить запись...

if(@$Go) {

  array_unshift($Book,$Text);

  $f=fopen("book.dat","w");

  fwrite($f,Serialize($Book));

  fclose($f);

  // Внимание! Самопереадресация. Обратите внимание на то,

  // какой заголовок мы посылаем.

  Header("Location: http://$HTTP_HOST$REQUEST_URI?".time());

  exit; // Завершить сценарий.

}

?>

<form action=sr.php method=post>

Введите текст:<br>

<input type=text name=Text><br>

<input type=submit name=Go value="Go!">

</form>

<?foreach($Book as $k=>$v) {?>

  <?=$v?>

  <hr>

<?}?>

Мы обеспечиваем "уникальность" URL страницы гостевой книги за счет добавления в его конец текущего времени в секундах, прошедших с 1 января 1970 года (так называемый Unix timestamp). Вряд ли пользователь будет обновлять страницу чаще, чем раз в секунду, поэтому такой способ прекрасно подходит для наших целей.

Обратите внимание на то, что в заголовке Location мы передаем полный URL страницы, включая имя хоста. Большинство браузеров умеют "пони­мать" и сокращенные пути (например, без указания имени сервера), но некоторые — нет, так что лучше не искушать судьбу.




Содержание  Назад  Вперед