2015-09-09 3 views
0

У меня есть вопрос ..PHP редирект не происходит

function curPageURL() { 
    $pageURL = 'http'; 
    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} 
    $pageURL .= "://"; 
    if ($_SERVER["SERVER_PORT"] != "80") { 
     $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
    } else { 
     $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
    } 
    return $pageURL.'?app_not_found'; 
} 

С помощью функции Я выборка текущего URL .... теперь у меня есть два условия

if($databaseAppVersion == $appVersionName) 
    { 
     //echo curPageURL(); 
     header('Location: '.curPageURL()); 
    } 
    else 
    { 
     $url ="www.google.com"; 
     //echo $url; 
     header('Location: '.$url); 
    } 

, когда я печать их эхо происходит, но проблема в том, что она не перенаправляет меня на предполагаемую страницу ... в первом случае я хочу перенаправить на текущую страницу с сообщением ie localhost/test/index.php? app_not_found, но это не происходит

+0

Просто немного не по теме, но для https ваш код будет добавлен: 443, так как вы ищете неявный порт 80 – JoSSte

+0

Вы просматривали журнал ошибок? Является ли какой-либо код отправлением чего-либо перед вызовом заголовка («location»)? – JoSSte

+0

nopes .... вы видели мой код –

ответ

0

если страница выглядит так:

<?php 

function curPageURL() { 
    $pageURL = 'http'; 
    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} 
    $pageURL .= "://"; 
    if ($_SERVER["SERVER_PORT"] != "80") { 
     $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
    } else { 
     $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
    } 
    return $pageURL.'?app_not_found'; 
} 

if($databaseAppVersion == $appVersionName) 
    { 
     //echo curPageURL(); 
     header('Location: '.curPageURL()); 
    } 
    else 
    { 
     $url ="www.google.com"; 
     //echo $url; 
     header('Location: '.$url); 
    } 

Я бы не ничего, кроме перенаправляет www.google.com ожидать, так как вы не устанавливая $databaseAppVersion и $appVersionName везде

если у вас есть функции echo или print перед вызовом заголовка, перенаправление не будет работать, поскольку заголовки уже отправлены. См. How to fix "Headers already sent" error in PHP.

другая нота; ваш curPageURL() не обязательно вернуть то, что вы ожидаете:

если вы даете ему http://www.example.com он вернется http://www.example.comhttps://www.example.com вернется https://www.example.com:443, так как вы проверяете только порт 80.

вы можете изменить код легко:

function curPageURL() { 
    $pageURL = 'http'; 
    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} 
    $pageURL .= "://"; 
    if ($_SERVER["SERVER_PORT"] != "80" || ($_SERVER["SERVER_PORT"] != 443 && $_SERVER["HTTPS"] == "on")) { 
     $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; 
    } else { 
     $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 
    } 
    return $pageURL.'?app_not_found'; 
} 
Смежные вопросы