PHP готовить ie не работает сразу после установки - PullRequest
0 голосов
/ 07 мая 2020

Я новичок в файлах cookie и попытался найти свою проблему, но не смог ее найти.

Мой код:

index. php

<?php 
   if (isset($_GET["submit"])) {
       setcookie("time",date('Y/m/d H:i:s'),time()+3600);

       echo $_COOKIE["time"];
   }

   //Look if cookie isset, if not open overlay.
   if (isset($_COOKIE["time"])) {
      echo "<body>";
   } else {
       echo "<body onload='toggleOverlay(0)'>";
    }
?>

Когда вы открываете страницу в браузере, выполняется нижняя часть кода php, не должно быть повара ie 'time', поэтому тело будет отражено с помощью onload = "toggleoverlay ( ) ". Все это работает нормально.

затем, когда я нажимаю кнопку отправки, чтобы принять файлы cookie, страница перезагружается, и выполняется верхняя часть моего кода php, повар ie с именем 'time 'создается с текущим временем.

тогда нижняя часть должна быть выполнена, но она по-прежнему повторяет тело с onload, хотя я только что создал повар ie.

i также получаю ошибку, когда я пытаюсь повторить повар ie (говоря, что повар ie не существует). когда я снова загружаю страницу вручную, она работает. Но это очень неприятно, так как нужно принять повара ie. затем страница перезагружается, и наложение открывается снова.

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

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Cook ie не устанавливается, пока ответ не будет отправлен обратно клиенту (браузеру). Он недоступен в вашем PHP до следующего запроса от клиента после этого.

Вы можете сделать следующее.

<?php
    $cookie_set = isset($_COOKIE['time']);

    if (!$cookie_set && isset($_GET['submit']) {
        setcookie('time', date('Y/m/d H:i:s'), time() + 3600);
        $cookie_set = true;
    }

    if ($cookie_set) {
        echo '<body>';
    } else {
        echo '<body onload="toggleOverlay(0)">';
    }
0 голосов
/ 07 мая 2020

Я нашел полурешение, если страница отправлена, страница перезагружается, а затем после создания ie страницы я перезагружаю страницу снова и меняю индекс. php? Отправить в index. php

вот так

 <?php 
   if (isset($_GET["submit"])) {
     setcookie("time",date('Y/m/d H:i:s'),time()+3600);

     echo $_COOKIE["time"];

     header("Refresh:0; url=index.php");
   }

   //Look if cookie isset, if not open overlay.
   if (isset($_COOKIE["time"])) {
      echo "<body>";
   } else {
      echo "<body onload='toggleOverlay(0)'>";
  }
?>

Вот так работает, но не лучшее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...