2013-04-26 3 views
1

Привет, ребята, я пытаюсь создать скрипт перенаправления в своем заголовке. Он содержит переменную $ redirect, которая равна 0 или 1.Если текущий URL равен rediectURL ничего не делать

Что я хочу сделать, это если переменная равна 1, чтобы перенаправить пользователя на указанную страницу. Это работает. Проблема, с которой я сталкиваюсь, - это когда он достигает перенаправленного URL-адреса, он создает цикл. Я попытался написать следующий код, но он не работает. Что я сделал не так?

<?php 
$redirect = 1; 
$host = $_SERVER['HTTP_HOST']; 
$self = $_SERVER['PHP_SELF']; 
$query = !empty($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : null; 
$url = !empty($query) ? "http://$host$self?$query" : "http://$host$self"; 

$redirectURL = '/protest/cispa.php'; 
if ($redirect === 1) { 
if ($url === $redirectURL) { 
die(); 
} 
else { 
header("Location: $redirectURL"); 
exit; 
}} 
?> 

Как было предложено andrewsi я обновил свой код на следующую это работает:

<?php 
$redirect = 0; 
$host = $_SERVER['HTTP_HOST']; 
$self = $_SERVER['PHP_SELF']; 
$query = !empty($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : null; 
$url = $self; 

$redirectURL = '/protest/cispa.php'; 
if ($redirect === 1) { 
if ($url === $redirectURL) { 
} 
else { 
header("Location: $redirectURL"); 
exit; 
} 
} 
?> 
+0

Вы '$ Перенаправление = 1' в верхней части, то вы проверить' $ редиректа === 1', но никогда не дают возможность изменить его. Это то, что вы хотите сделать? У вас также есть 'if ($ url === $ redirectURL)', но вы устанавливаете '$ url' то, что' $ redirectURL' никогда не установлен. Это означает два куска мертвого кода. – Tigger

+0

Я вручную изменяю его, редактируя код. – VampireNews

ответ

0
$url = !empty($query) ? "http://$host$self?$query" : "http://$host$self"; 

$redirectURL = '/protest/cispa.php'; 

Ваш $ URL содержит полное доменное имя; redirectURL - это просто путь. Оба никогда не будут равны. Попробуйте установить:

$url = $self; 

(если я читаю ваш код правильно)

+0

Изменен так, как вы сказали, и он работает. Благодарю. – VampireNews

+0

Рад помочь! – andrewsi

0

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

ex;

http://www.yoursite.com/redirectedto.php?red=1

Теперь, если красный установлен, я бы не добавить редирект.

подветренной

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