2009-07-01 6 views
0

나는 약간의 언어로 내 사이트를 만들려고합니다. 모든 페이지는 세션에서 변수 'lang'을 검사하는 config-file을 포함합니다. 존재하지 않으면 wang은 lang이 선택한 페이지로 리디렉션됩니다. 선택하면 페이지에 오기 전에. 하지만 Mozilla Firefox에서만 작동합니다. 언어 검사 후 다른 브라우저에서 나는 항상이 페이지를 얻는다 (lang checking). 내가 뭘 잘못 했니? 구성 파일 :PHP + 세션으로 리디렉션

// Here is session start... 
if (!isset($_SESSION['site_lang'])) 
{ 
    $_SESSION['page_refer'] = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; 
    echo '<meta http-equiv="Refresh" content="0; URL=lang_choose.php">'; 
    exit; 
} 
else 
{ 
    require_once 'languages/'.$lang.'.php'; 
} 
?> 

lang_choose.php :

// Session start 
    @extract($_POST); 
    if (isset($_POST['lang'])) 
    { 
    $lang = $_POST['lang']; $lang = replace($lang); 
    $_SESSION['site_lang'] = $lang; 
    echo '<meta http-equiv="Refresh" content="0; URL='.$_SESSION['page_refer'].'">'; 
    } 
    else 
    { 
     // Showing form with flags... which returns var 'lang' 
    } 

편집 : 형태

< input type="image" src="img/langs/en.png" width="290" height="200" border="1" name="lang" value="en" /> 

을가 경우 다른 작동하지 않습니다 브라우저 (모질라 제외) 하지만 내가 사용하는 경우 :

< input type="submit" name="lang" value="en" /> 

모든 것이 좋습니다. 어떤 아이디어?

감사합니다. 리디렉션을 수행하려면이 옵션을 사용하여

+3

쿠키가 활성화/비활성화되어있는 것과 관련이 있다고 생각하지 않습니까? 미안하지만, 나는 그 정도의 PHP를 정말로 모른다. 그러나 이것은 전에 물었다. –

+0

그리고 다른 브라우저를 사용하여 1 대의 컴퓨터에서 테스트 한 것을 잊지 마십시오. Firefox 만 정상적으로 작동합니다. (모든 브라우저에서 쿠키가 활성화 됨) – Ockonal

+0

콘텐츠 속성을 0 대신 10 초 동안 대기시킨 다음 페이지의보기 소스를 수행하여 "URL = ..."부분의 URL이 올바른지 확인하십시오. –

답변

6

시도 :

<?php 
header('HTTP/1.1 302 Found'); 
header('Location: ' . $_SESSION['page_refer']); 
// And just in case that doesn't work 
echo '<html>', 
    '<head>', 
    '<title>Redirect</title>', 
    '</head>', 
    '<body>', 
    '<script type="text/javascript">', 
    'window.location.href = "' . $_SESSION['page_refer'] . '";', 
    '</script>', 
    '<a href="' . $_SESSION['page_refer'] . '">Click here to continue</a>', 
    '</body>', 
    '</html>'; 
?> 

은 또한 리디렉션 할 수있는 <meta> 태그의 사용에주의가 discouraged by the W3C입니다.

+0

도움이되지 않습니다 = ( – Ockonal

+0

) 이제 302 헤더를 제공 한 다음 JavaScript를 사용하여 리디렉션하려고 시도하고 마지막으로 링크가 작동하지 않는다면 PHP 오류 로그를 확인하거나 파일의 맨 위에'ini_set ('display_errors', 'On');을 추가해야합니다 .' ini_set()' 해석 에러가없는 경우 –

0

위치 헤더를 설정하면 작동하지 않을 경우 자바 스크립트가 재 시도 :

echo '<script>window.location.href="',$_SESSION['page_refer'],'"</script>'; 
0

당신이 헤더를 사용하는 경우 ('위치 :'); 나중에 exit() 또는 die()를 추가하면 프로그램이 끝까지 실행되고 일부 브라우저는이를 받아 들일 수 없으므로 보안 상 치명적으로 보안을 손상시킬 수 있습니다.