2012-12-13 2 views
-1

안녕하세요, 작동하지 않는 헤더 기능을 통해 미친 듯이 보입니다.if 문에서 헤더 페이지로 디렉토리를 제외하는 방법

사용자가 페이지 foo.php를 호출하면 헤더가 표시됩니다. therfor 나는이 script.php에서 스크립트를 포함

스크립트가 내가 foo는 헤더 필요가 원하는 언어 및 국가 코드를 가지고에서,

$_SERVER["HTTP_ACCEPT_LANGUAGE"])

괜찮에서 허용 언어에 대한 정보를 판독 올바른 언어 방향으로 .php. 이 script.php의 코드 같은 것입니다 : 그 루트가/스크립트/스크립트에 위치하고 있으며 바로이 script.php 호출 할 때

if ($pref_language == 'af'){ 
    header('Location:en'.$_SERVER['SCRIPT_NAME']); 
    exit; 
} 
if ($pref_language == 'sq'){ 
    header('Location:en'.$_SERVER['SCRIPT_NAME']); 
    exit; 
} 

그래서 이러한 예는 지금

root/en/foo.php

의 디렉토리에 foo.php 헤더 것 .php 나는 루트/en/scripts/script.php로 갈 것이다. 그 이유는 내가 if- 조건을 추가하고 싶습니다. if 문과 함께 header(); 루트/스크립트/외부의 파일들에 대해서만 발생합니다.

그래서 추가 : 작동하지 않는

$filename = $_SERVER['SCRIPT_NAME']; 
$path = $_SERVER['HTTP_HOST']."/scripts".$_SERVER['SCRIPT_NAME']; 

if (isset($path == false)){ 

    if ($pref_language == 'af'){ 
     header('Location:en'.$_SERVER['SCRIPT_NAME']); 
     exit; 
    } 
    if ($pref_language == 'sq'){ 
     header('Location:en'.$_SERVER['SCRIPT_NAME']); 
     exit; 
    } 
} 

. 그래서 누군가가 나를 도울 수 있다면 나는 정말로 감사 할 것입니다.

감사합니다.

+0

if (isset ($ path == false))'? false가 여기에 설정된 경우 체크인을합니다. 단순히'if ($ path)'가되어서는 안됩니까? –

+0

나는 축구가 아닌 "헤딩"하는 것이 무엇을 의미하는지 전혀 모른다. 질문을 해결할 수 있습니까? –

+0

그것은 URL이 $ 경로가 아니어야 함을 의미합니다. 그래서 root/scripts/file.ext 디렉토리를 헤더에서 제외시킵니다. – bonny

답변

1

이는 방법으로 가지 바보 있지만, 당신의 해결책이 될 수 있지만, 작업을 수행합니다

<?php 

$unwanted_dir = "/scripts"; 

// this will make sure that the script name doesnt start with "/scripts" 
if (substr($_SERVER['SCRIPT_NAME'], 0, strlen($unwanted_dir)) != $unwanted_dir){ 

    if ($pref_language == 'af'){ 
     header('Location:en'.$_SERVER['SCRIPT_NAME']); 
     exit; 
     } 
    if ($pref_language == 'sq'){ 
     header('Location:en'.$_SERVER['SCRIPT_NAME']); 
     exit; 
     } 
} 
?> 

다른 방법은 정규 표현식이 될 것입니다,하지만 이것이 내가 조언

더 간단하다 당신은 언어를 선택할 때 좀 더 역동적 인 것으로 만들 수 있습니다. 예 :

<?php 

$unwanted_dir = "/scripts"; 
$pref_language == 'af'; // dynamicaly set the language 
$full_path = '/home/php/site/'; 

// this will make sure that the script name doesnt start with "/scripts" 
if (substr($_SERVER['SCRIPT_NAME'], 0, strlen($unwanted_dir)) != $unwanted_dir){ 

    if (is_dir($full_path . $pref_language)){ 
     header('Location:'$full_path . $pref_language . $_SERVER['SCRIPT_NAME']); 
    } 
    else{ 
     echo "Sorry, we don't support your language"; 
     // or 
     // header('Location:go/to/unsopported/languages.php'); 
    } 

    exit; 
} 
?> 
+0

완벽한 감사합니다. – bonny

+0

if() 문을 변경하는 것이 좋습니다. 나는 대답에 이것을 더한다 ... – MAXIM