2015-04-22 3 views
-1

Так у меня есть следующий код:Как перехватить запрос, а затем загрузить содержимое

header('X-Powered-By: Mecanik1337'); 
    header('X-Frame-Options: SAMEORIGIN'); 
    header('X-XSS-Protection: 1; mode=block'); 
    header('X-Content-Type-Options: nosniff'); 
    header("X-Message: Why are you seeing this? Bad boy!"); 

    if (!isset($_COOKIE['SOMECOOKIE'])){ # not interesting. 
     setcookie('SOMECOOKIE', true, time()+3600); // every hour :) 
     echo ' Please wait....'; 

    <br><script> 
       var counter = 5; 
       var seconds = ""; 
       setInterval (function() 
       { 
       counter--; 
       if(counter < 1) 
       { 
       window.location = "index.php"; 
       } 
       else 
       { 
       if(count <= 1) seconds = " second"; 
       else seconds = " seconds..."; 
       document.getElementById("count").innerHTML = counter + seconds;} }, 1000); 

       <noscript> 
       <h1 style="color:red;">Please turn JavaScript on and reload the page.</h1> 
       <noscript> 
     die(); # die xD 
    } 

Теперь то, что он должен сделать, это проверить, если SOMECOOKIE установлен, если не показывать это сообщение и отсчитает 5 секунд затем перезагрузите страницу так, как она должна быть, но теперь она просто перезагружает и перезагружает страницу каждые 5 секунд. Это не полный код. Я добавлю некоторые проверки против ботов, но прямо сейчас я просто хочу, чтобы это сработало. Мне жаль, что я не смог выполнить эту «проверку» перед каждым запросом, но это невозможно, так как она перезагружается снова и снова.

+0

Есть ли «= идентификатор счетчик» элемент в HTML? В противном случае утверждение innerHTML не будет выполнено. Но почему бы вам просто не отправить заголовок «Обновить»? 'Заголовок ('refresh: 5');'. Обратный отсчет может быть классным для некоторых, но простота работает лучше всего. – LSerni

+0

@lserni - спасибо за ответ, мне нужно обратный отсчет, сделав обновление с помощью заголовков, не поможет мне, можете ли вы помочь мне с ID? вы имеете в виду создание уникального идентификатора для каждого клиента? –

+0

@Iserni - добавьте ответ тогда :) –

ответ

0

В коде Javascript у вас есть,

document.getElementById("count").innerHTML = counter + seconds; 

Это находит DOM элемент, идентификатор (отсюда «получить элемент по идентификатором») является „счетчик“ и помещает текст, который вы хотите там.

Но элемент должен существовать, иначе document.getElementById вернет NULL, и вы будете пытаться модифицировать innerHTML из NULL. Что нельзя сделать.

Чтобы создать такой элемент, только выход правильного HTML документ:

setcookie('SOMECOOKIE', true, time()+3600); 
print <<<DOCUMENT 
<html> 
    <body> 
     Please wait <div id="count"></div> 
     <noscript> 
      <h1 style="color:red;"> 
       Please turn JavaScript on and reload the page. 
      </h1> 
     </noscript> 
     <script> 
      // Your script goes here. 
     </script> 
    </body> 
</html> 
DOCUMENT; 
// It is very important that the above line starts at column 1 (no 
// spaces before the 'DOCUMENT'), that there is nothing after the ; 
// just in case, and that no other triple-angle-bracket section in 
// this file is tagged as DOCUMENT. You can add another section with 
// a different tag, such as DOCUMENT1 or HELLOWORLD. 
die(); 
+0

хорошо, что didn't work;/counter больше не работает, ни обновление :( –

+0

Я подготовил JSFiddle с образцом кода. Скрипка выводит данные в другом порядке , но «части» одинаковы. Я не вижу причин, по которым он не должен работать, когда это делается на PHP. Какую ошибку вы получаете? Является ли это ошибкой PHP или браузером? Это скрипка: http : //jsfiddle.net/07Loo6mL/ – LSerni

+0

@Iserni - я тестировал, но не добился успеха. Когда я совмещаю его с php, он не делает то, что я хочу ... Проверьте, есть ли SOMECOOKIE, если не показать Пожалуйста, подождите bla bla bla ... –

Смежные вопросы