2012-12-12 2 views
0

나는 자신의 언어로 폴더를 만들고 싶습니다.헤더 함수에서 PHP 변수를로드하십시오.

예를 들어 파일 foo.php이 있습니다. 이 파일에는 영어 버전과 네덜란드어 버전이 있습니다.

그 때문에 /english/foo.php/dutch/foo.php 디렉토리를 만들었습니다. 그 디렉토리에있는 두 파일은 루트 폴더와 정확히 같을 것입니다.

if ($pref_language == 'zu'){ 
    $header = 'english'.$_SERVER['PHP_SELF']; 
    $var = "xyz"; 
} 

header ("location: $header"); 

문제 : 루트 폴더 root/foo.php에서

은 내가 헤더 기능을 사용 할 파일 root/scripts/bar.php에서 root/scripts/bar.php

호출되는 다른 파일 및 디렉토리에서 오는 변수 $var로드 그럴 때 root/foo.php 헤더 함수가 있어야하지만 $var은 그 방향으로 초기화되지 않습니다. 소스 코드를 열면 아무 것도 없습니다

<?php echo $var;?> 

그러나 소스 코드를 헤더없이 보았을 때 변수가로드됩니다.

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

감사합니다.

+0

비즈니스 논리를'foo.php'에 넣지 않았 으면 좋겠어요. –

+0

그게 무슨 뜻입니까? – bonny

+0

비즈니스/애플리케이션 로직을'foo.php'에 넣었습니까? –

답변

0

header("location: $header");을 사용하면 브라우저가 $header으로 리디렉션됩니다. 원하는 내용이 아닙니다.

다음에 정의 된 변수를 사용하는 $header에서 파일을 허용 것이다 당신은 include($header); (here을 문서화 이상 아마 requirehere를 문서화) 할 수있다. 당신이 정말로 원하는 것 같아 무엇

는 국제화이며, 같은 나뭇 가지 (here) 또는 스마티 같은 PHP에서 그렇게 할 수있는 좋은 도구가 있습니다 (here)

0

가장 좋은 최선의 재 작성 규칙을 활용할 수 있습니다 웹 서버가 특정 언어에 대한 URL 요청을 PHP 파일에서 사용할 수있는 매개 변수로 지정합니다. 아파치의 예는 다음과 같습니다

RewriteEngine On 
RewriteRule ^/?(english|dutch)/(.*)$ /$2?lang=$1 [L,QSA] 

/english/foo.php에 예를 원인 요청을 처리 /foo.php?lang=english에 전달 될 것입니다.

그런 다음 $_GET['lang']을보고 사용할 현지화를 결정할 수 있습니다.

이렇게하면 브라우저 리디렉션을 할 필요가 없으며 최종 사용자가 완전히 영어 사이트 (/english/*) 인 것처럼 보이도록 사이트 내의 모든 링크에 $_GET['lang'] 값을 동적으로 앞에 추가하는 좋은 방법을 제공합니다) 또는 네덜란드 사이트 (/dutch/*).

+0

안녕하세요, 저는 http_accept_language를 사용하여 필요한 정보를 얻습니다. 그래서 htaccess를 사용하는 것은 나를위한 선택 사항이 아닙니다. – bonny