Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как однин скрипт загрузить в две страницы сразу?
 
 автор: Eugene77   (20.05.2007 в 05:55)   письмо автору
 
 

У меня одна страничка проделывает довольно долгий по времени подготовительный процесс.
Я хочу, пока она готовится к показу, развлекать юзера другой страничкой.
Но если запускать одну страничку из другой JavaScript-ом, то браузер пытается блокировать "активное" содержимое или "всплывающее окно". Может быть средствами PHP можно запустить сразу два скрипта по одному запросу браузера?

   
 
 автор: cheops   (20.05.2007 в 11:05)   письмо автору
 
   для: Eugene77   (20.05.2007 в 05:55)
 

Перед запуском длительного процесса направляйте пользователя на развлекательную страницу, после чего осуществляйте редирект на страницу с длительным процессом. Пока процесс не завершится пользователь будет лицезреть развлекательную страницу.

   
 
 автор: Eugene77   (20.05.2007 в 11:19)   письмо автору
 
   для: cheops   (20.05.2007 в 11:05)
 

осуществляйте редирект на страницу
Я этого и хочу, только не знаю как это аккуратно сделать.
Браузеры склонны блокировать такие переходы, всплывающие окна показывать итд.
Как это максимально аккуратно сделать без нажатия кнопок пользователем?
Вообще-то я планировал три-четыре развлекательных странички успеть за это время показать. Одной явно будет мало.
Чуточку бы точнее, что значит "редирект"! Русский перевод перенаправить довольно многозначен. Это кучу разных действий можно назвать общим словом "редирект". Что конкретно имелось в виду, какой код?

   
 
 автор: cheops   (20.05.2007 в 11:25)   письмо автору
 
   для: Eugene77   (20.05.2007 в 11:19)
 

Под редиректом подразумеваю переход на страницу при помощи отправки клиенту HTTP-заголовка Location (он должен выполняться строго любыми клиентами)
<?php
  header
("Location: index.php");
?>

   
 
 автор: Eugene77   (20.05.2007 в 11:49)   письмо автору
 
   для: cheops   (20.05.2007 в 11:25)
 

То есть разместить этот отрывок
<?php
header("Location: index.php");
?>
после закрытия тега </html>?
Спасибо!
Ну а два таких заголовка разместить нельзя?
Один-то действительно выполняется без помех со стороны браузера.
Есть у этого заголовка ещё параметры? _blank - может быть или что-то в этом роде?

   
 
 автор: cheops   (20.05.2007 в 12:14)   письмо автору
 
   для: Eugene77   (20.05.2007 в 11:49)
 

Нет, после </html> не получится, в этом случае нужно будет использовать конструкцию
<?php
    
echo "<HTML><HEAD>
          <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>
          </HEAD></HTML>"
;
?>

или прибегнуть к буферизации вывода, так как HTTP-заголовки должны отправляться заранее.

>Ну а два таких заголовка разместить нельзя?
Нет, тут без всплывающего окна не обойтись.

   
 
 автор: Eugene77   (20.05.2007 в 12:30)   письмо автору
 
   для: cheops   (20.05.2007 в 12:14)
 

Что означает
CONTENT='0;
?

И опять же, не понятно где подразумевается расположить этот заголовок по отношению к контенту развлекательного файла?
Если в начале, то, я так понимаю, файл вообще не будет отображаться, сразу получится переход на index.php.

   
 
 автор: Trianon   (20.05.2007 в 11:05)   письмо автору
 
   для: Eugene77   (20.05.2007 в 05:55)
 

Два фрейма использовать не получается?

   
 
 автор: coloboc66   (20.05.2007 в 11:26)   письмо автору
 
   для: Trianon   (20.05.2007 в 11:05)
 

Я как-то видел здесь тему, где спрашивалось, как избежать блокирования броузером ява-скрипта. Так вот там был ответ, что для этого ява-скрипт нужно формировать средствами РНР, что-то типа:

<?
echo "<script>alert('Hi!');</script>"
?>

Но сам не пробовал...

   
 
 автор: Eugene77   (20.05.2007 в 11:39)   письмо автору
 
   для: coloboc66   (20.05.2007 в 11:26)
 

alert() не блокируется браузером.
Браузером блокируется click() и тому подобное, то есть запуск новых процессов с неизвестным кодом. Стандартные функции Java исполняются без помех.

   
 
 автор: Trianon   (20.05.2007 в 11:44)   письмо автору
 
   для: coloboc66   (20.05.2007 в 11:26)
 

Браузер получает код, не имея представления, был ли он написан руками, ил сгенерирован php. Не все ответы - верные.

   
 
 автор: Eugene77   (20.05.2007 в 12:03)   письмо автору
 
   для: Trianon   (20.05.2007 в 11:44)
 

Да я это понимаю. PHP работает на хостинге, а браузер получает уже готовый html, ему неизвесно как он образовался. Вопрос в другом:
Как отдать браузеру две страницы на один запрос?!
Ибо внутри браузера страницам плодиться и размножаться почти запрещено. Ну, разве что под строгим присмотром. А юзеров пугает этот безобидный в общем-то, я бы даже сказал естественный для некоторых сообществ процесс! Поэтому я хочу его сделать на сервере, наверняка разработчики http предусмотрели возможность посылки повторного запроса, в ответ на ошибку, может быть, или ещё по какой-то причине. Просто это уже тонкости, в которых я без помощи кого-то опытного не разберусь.

   
 
 автор: Eugene77   (20.05.2007 в 11:34)   письмо автору
 
   для: Trianon   (20.05.2007 в 11:05)
 

Насчёт двух фреймов я не думал. Но будет ли это самым простым решением? Боюсь всё переусложнить. И так уже страница перегружена кодом, не разобрать ничего. Если сейчас ещё во фреймы это объединить, потом разберусь я как этими фреймами управлять? Проще хочу! Но если есть реальная идея с ясной стратегией, когда видно, что не запутаться, то буду благодарен за подсказку.
То есть задача такая: показать несколько развлекательных страничек, пока готовится основная с длинным процессом. Напишите кусочек кода, как вы видите решение!

   
 
 автор: Eugene77   (20.05.2007 в 18:27)   письмо автору
 
   для: Eugene77   (20.05.2007 в 05:55)
 

Раз cheops сказал нельзя - значит нельзя!!!
Всё обсуждение застыло.
А ведь интересно начиналось.
Проблема, между тем, так и не решилась.
Что мне делать?

   
 
 автор: sim5   (20.05.2007 в 19:15)   письмо автору
 
   для: Eugene77   (20.05.2007 в 18:27)
 

Хеопс сказал вам - что нельзя посылать заголовок после закрывающего тега </html>.
Предложил он вам следующее:


<?php 
    
echo "<HTML><HEAD> 
    <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'> 
    </HEAD></HTML>"

?>


Это означает что на вашей "развлекательной" странице будет помещен мета-тег <META HTTP-EQUIV='Refresh' CONTENT='время в сек; URL=index.php?вызов'> между тегами <HEAD> и </HEAD>, который загрузит основную страницу, что может выглядеть в браузере в конечном итоге так:


<HTML>
<HEAD>
<TITLE>Развлекаемся</TITLE>
<META HTTP-EQUIV='Refresh' CONTENT='15 (это время для развелечений); URL=index.php?хватит развлечений, вызов рабочей страницы после 15 сек развлечений'>
</HEAD>
<BODY>
.......
</BODY>
</HTML>


Не ждите продолжения кино - пробуйте :)

   
 
 автор: Eugene77   (20.05.2007 в 20:19)   письмо автору
 
   для: sim5   (20.05.2007 в 19:15)
 

Спасибо!
Одно лишь то, что я знаю, что не изобретаю велосипед - уже хорошо!
Попробую как-то иначе...
В принципе, можно и не делать ничего. На Java у меня вариант уже работает, а блокировка скриптов может быть и не часто включена бывает у юзеров. Хорошо бы знать процент...
Ну, тоже наверняка никто не знает!
Остаётся на кофейной гуще погадать.
Кто рецептик подбросит? :-)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования