2016-02-25 3 views
0

Я закончил настройку функции обслуживания на своей веб-странице. Это кодИзбегание цикла перенаправления

<?php 
     session_start(); 
     require_once("system/functions.php"); 
     require_once("system/config.php"); 
     if($maintenance == 1){ 
      require_once(header("Location: index.php?page=maintenance")); 
      die(); 
      session_destroy(); 
     }elseif($maintenance == 0) 
     { 
      getPage(); 
     } 
    ?> 

index.php Я также попытался с

header("Location: index.php?page=maintenance"); 

Вместо кода заголовка требуется один раз выше. Но если я ставлю

require_once("frontend/pages/maintenance.php"); 

Он будет работать. Проблема в том, что люди могут вводить каждую страницу, которую они хотят в адресной строке, и это будет отображаться. Мне нужно, чтобы он использовал собственный URL-адрес (который работает с двумя кодами заголовков выше, но я получаю слишком много ошибок при переадресации), и независимо от того, вы будете перенаправлены на этот URL-адрес, чтобы увидеть экран обслуживания

Часть php файла maintenance.php:

<?php 
if($maintenance == 0){ 
    header("Location: index.php?page=index"); 
    die(); 
} 
else{ 
    header("Location: index.php?page=maintenance"); 
    die(); 
} 
?> 

можно удалить еще часть кода на файл maintenance.php, но он всегда будет перенаправлять на «WebSiteName» /index.php(Still экран обслуживания, хотя, тот же проблема, как упоминалось выше)

Поэтому мне нужно изменить свой код, поэтому, когда есть обслуживание, вы будете перенаправлены на index.php? page = maintenance n о чем. Извините, если я пропустил некоторые детали, уже поздно. Не стесняйтесь спрашивать меня об этом, если это необходимо :)

+0

где находится код, где вы на самом деле отобразить страницу обслуживания? в index.php или в maintenance.php? – trincot

+0

Это было в maintenance.php. Сейчас проблема исправлена ​​:) – Xsef

ответ

0

Действительно, похоже, что вы зацикливаете. Далее выполняется, когда вы находитесь в сценарии index.php:

require_once(header("Location: index.php?page=maintenance")); 

Так что вы на самом деле загрузить скрипт, который вы уже работает, снова. И он снова найдет обслуживание == 1 и сделает то же самое снова.

Вы должны просто перенаправить один раз, а затем, когда вы видите, вы уже на страницы = обслуживание URL на самом деле показать, что вы хотите отобразить в качестве поддерживающих сообщений, например:

session_start(); 
require_once("system/functions.php"); 
require_once("system/config.php"); 
if($maintenance == 1){ 
    if ($_GET['page']) == 'maintenance') { 
     // we have the desired URL in the browser, so now 
     // show appropriate maintenance page 
     require_once("frontend/pages/maintenance.php"); 
    } else { 
     // destroy session before exiting with die(): 
     session_destroy(); 
     header("Location: index.php?page=maintenance"); 
    } 
    die(); 
} 
// no need to test $maintenance is 0 here, the other case already exited 
getPage(); 

Убедитесь, что в frontend/pages/maintenance.php вы делаете не перенаправлять на index.php? page = обслуживание или вы все равно попадете в циклы.

Так интерфейс/страницы/maintenance.php должен выглядеть следующим образом:

// make sure you have not output anything yet with echo/print 
// before getting at this point: 
if($maintenance == 0){ 
    header("Location: index.php?page=index"); 
    die(); 
} 
// "else" is not needed here: the maintenance==0 case already exited 

// display the maintenance page here, but don't redirect. 
echo "this is the maintenance page"; 
// ... 
+0

Огромное вам спасибо! Он отлично работает сейчас, точно так, как я этого хочу :) – Xsef

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