Как загрузить содержимое страницы в себя, не вызывая бесконечный цикл? - PullRequest
1 голос
/ 16 мая 2011

Я пытаюсь понять, как запустить следующий php:

$html = file_get_contents(curPageURL()); //where curPageURL() returns the current page URL

, не вызывая бесконечный цикл

EDIT

Мне нужно, чтобы содержимое всей отрисованной страницы находилось в переменной.

Я пробовал:

if(!isset($_COOKIE['page_fetch'])){
    $html = file_get_contents(curPageURL());
    setcookie('page_fetch',$html, time()+20,'/');
} else {
    $html = $_COOKIE['page_fetch'];
}

Ответы [ 5 ]

3 голосов
/ 16 мая 2011

Я не уверен, почему вы бы хотели, но не могли бы вы передать переменную, говорящую об остановке?

if (!$_REQUEST['stop']) {
    $url = curPageURL() . '?stop=1';
    $html = file_get_contents($url);
}
0 голосов
/ 16 мая 2011

Я не знаю, в чем проблема с cookie, возможно, с максимальным размером или тайм-аутом, когда контент отправляется от клиента к серверу.

Но так как вам нужно значение нана стороне сервера, почему бы вам не использовать переменную сеанса в сочетании со значением времени, чтобы вы знали, истек ли он?

0 голосов
/ 16 мая 2011

Вы не можете. По определению он бесконечно рекурсивен.

Я полагаю, что вам нужна немного другая версия текущей страницы (то есть та, которая не загружается снова). Смотрите ответ от Newtron о том, как это сделать.

0 голосов
/ 16 мая 2011

Нет способа, которым это не привело бы к бесконечному циклу.

То, что вы спрашиваете, можно объяснить с помощью этого вымышленного примера:

function hi() {
   echo '<div>';
   hi();
   echo '</div>';
}

Так что ответ, вероятно, таков: вы не хотите этого!Вы, вероятно, пытаетесь сделать что-то еще, но не объясняете это хорошо.Поэтому начните с того, что вы на самом деле пытаетесь достичь.

0 голосов
/ 16 мая 2011

почему бы не использовать jquery и .load ()? или используя функцию, которая срабатывает только один раз?

...