2012-03-27 3 views
2

У меня есть следующий код, в котором я использую некоторые условия на странице, которые должны быть открыты или перенаправлены на любой другой URL-адрес, но метод php для вызова URL-адреса здесь не работает, пожалуйста, помогите мне, как выйти из этой проблемы вот мой PHP кодперенаправление на страницу url в php

<?php 

$good_domains = array("http://172.17.0.221:84/cp.aspx","http://172.17.0.221:84/cp.aspx"); 
if(!in_array($_SERVER['HTTP_REFERER'],$good_domains)){ 
echo "<script>alert(\"NO\");</script>"; 
Redirect('http://www.google.com.pk'); 
} 
else{ 
echo "<script>alert(\"YES\");</script>"; 
//echo $_SERVER['HTTP_REFERER']; 
//Redirect('http://www.shakarganj.com.pk'); 

$URL="http://www.google.com"; 

header ("Location: $URL"); 
} 

?> 

Когда я запускаю страницу генерируется ошибка folowing.

Warning: Cannot modify header information - headers already sent by (output started at C:\xampplite\htdocs\a\sfpl\MT.php:9) in C:\xampplite\htdocs\a\sfpl\MT.php on line 15 

ответ

2

В верхней части файла индекса добавьте это:

ob_start(); 

Это позволит удалить это предупреждение, если я не ошибаюсь.

5

Вы не можете сделать заголовок переадресации на основе, если вы уже отправили информацию в браузер, который ваш вызов echo будет делать. Вы должны удалить вызовы на echo, а также убедиться, что перед вашим первым тегом </php нет пробелов.

+0

Его Хорошо, но я должен использовать эхо и после сообщения в эхо, я хочу перенаправить, как это возможно ible? –

+0

Вы хотите отобразить сообщение пользователю, а затем перенаправить? В этом случае вам придется использовать клиентское решение для перенаправления, либо JavaScript, либо метатег. Ответ @ balkon_smoke предоставляет решение JS. – shanethehat

+0

@ user1220667 какова точка эха-чего-то, а затем перенаправление ????? сделайте это на стороне клиента, если вы хотите показать сообщение 'location.href = ' в JavaScript – ManseUK

3

Прямая от header()help page here:

Помните, что заголовок() должно вызываться перед любым фактическим выходом , необходимо либо с помощью обычных HTML-тегов, пустых строк в файл, или из PHP. Это очень распространенная ошибка для чтения кода с функциями include() или require(), или другой функцией доступа к файлу, а также пробелов или пустых строк , которые выводятся перед вызовом header().

Вы echo сценарий тег в обе стороне if даного - вам необходимо удалить их на перенаправление стороны

2

Поскольку вы уже проделали echo заявления, PHP не может послать больше заголовков к выходу.

Вы должны убедиться, что любые вызовы header() выполняются перед любым другим выходом на вашу страницу.

2

Это стандартная ошибка; заголовок отправляет заголовки http и в момент запуска выхода, то есть заголовки уже отправлены

В этом случае вы можете избежать этой проблемы, используя выходную буферизацию (отметьте http://php.net/ob_start); Вам необходима опция должна быть включена на сервере и проверить размер буфера

3

В дополнение к ответам выше - если вы используете JS для отображения ДА/НЕТ предупреждение, почему вы использовали PHP для перенаправления?

Вы можете перенаправить пользователя в JS:

alert("NO"); document.location.replace("http://google.co.uk"); 
// otherwise 
alert("YES"); document.location.replace("http://google.com"); 

И если вы хотите иметь задержку перед пользователь будет перенаправлен, вы можете использовать setTimeout функцию:

alert("NO"); 
// wait 5 seconds before redirect 
setTimeout(5000, function() 
{ 
    document.location.replace("http://google.co.uk"); 
}); 
0

использование

echo '<META HTTP-EQUIV="refresh" content="0; URL=your_url">'; 
Смежные вопросы