포함할 PHP pass 변수

변수를 포함 파일로 전달하려고 합니다.호스트가 PHP 버전을 변경했는데 이제 어떤 솔루션을 사용해도 작동하지 않습니다.

내가 찾을 수 있는 모든 방법을 시도해 본 것 같아.그게 가장 간단한 일이라고 확신해!

변수는 호출된 첫 번째 파일에서 설정 및 평가해야 합니다(실제로$_SERVER['PHP_SELF']포함된 파일이 아닌 해당 파일의 경로를 반환해야 합니다.second.php).

옵션 1

첫 번째 파일:

global $variable; $variable = "apple"; include('second.php'); 

두 번째 파일:

echo $variable; 

옵션 2

첫 번째 파일:

function passvariable(){
$variable = "apple";
return $variable; } passvariable(); 

옵션 3

$variable = "apple"; include "myfile.php?var=$variable"; // and I tried with http: and full site address too.
$variable = $_GET["var"] echo $variable 

난 이것들 중 어느 것도 소용없어.PHP 버전은 5.2.16입니다.

제가 무엇을 빠뜨리고 있나요?

감사합니다!



질문에 대한 답변



extract() 함수를 사용할 수 있습니다.
drupal은 teme() 함수로 사용합니다.

여기에서는 Render 함수가 있습니다.$variables논쟁.

function includeWithVariables($filePath, $variables = array(), $print = true) {
$output = NULL;
if(file_exists($filePath)){
// Extract the variables to a local namespace
extract($variables);
// Start output buffering
ob_start();
// Include the template file
include $filePath;
// End buffering and return its contents
$output = ob_get_clean();
}
if ($print) {
print $output;
}
return $output;
} 


./index.syslog:

includeWithVariables('header.php', array('title' => 'Header Title')); 

./filength.php :

<h1><?php echo $title; ?></h1> 



옵션 3은 불가능합니다.브라우저에서 URL을 눌렀을 때와 마찬가지로 .php 파일의 렌더 출력을 얻을 수 있습니다.대신 (원하는 대로) raw PHP 코드를 얻으면 사이트의 모든 소스 코드가 노출되며, 이는 일반적으로 좋지 않습니다.

옵션 2는 별로 의미가 없습니다.함수에서 변수를 숨기고 PHP의 변수 범위를 따릅니다.그리고 또,$var = passvariable()그 변수를 ‘원점’으로 바꿀 수 있는 곳으로 돌아가면 다시 원점으로 돌아갈 수 있습니다.

옵션 1이 가장 실용적입니다. include()파일 내의 코드가 말 그대로 상위 페이지의 일부인 것처럼 지정된 파일을 슬럼핑하여 바로 실행합니다.이것은 글로벌 변수처럼 보이지만, 여기 있는 대부분의 사람들은 이를 반대하지만, PHP의 해석 시멘틱스에 따르면 이 두 가지는 동일합니다.

$x = 'foo'; include('bar.php'); 

그리고.

$x = 'foo'; // contents of bar.php pasted here 



가장 기본적인 레벨의 php의 include 스테이트먼트가 파일에서 코드를 가져와 호출한 위치에 붙여넣는 것을 고려하면 include의 매뉴얼에는 다음과 같이 기재되어 있습니다.

파일이 포함되어 있는 경우, 그 파일에 포함되는 코드는 include가 발생하는 행의 가변 범위를 상속합니다.발신 파일의 그 행에서 사용 가능한 변수는, 그 시점부터 착신 파일내에서 사용할 수 있습니다.

이것들 때문에 나는 서로 다른 문제가 있다는 생각이 든다.또한 옵션 3은 리다이렉트하지 않기 때문에 작동하지 않습니다.second.php2번 옵션은 이상한 문제일 뿐이에요php의 include 스테이트먼트의 가장 기본적인 예는 다음과 같습니다.

vars.php <?php
$color = 'green'; $fruit = 'apple';
?>
test.php <?php
echo "A $color $fruit"; // A
include 'vars.php';
echo "A $color $fruit"; // A green apple
?> 

옵션 1이 이 예에 가장 가깝고(복잡해야 하는 것보다 더 복잡하지만) 작동하지 않는 것을 고려하면, include 문(근원 또는 유사한 문제에 대한 잘못된 경로)에서 실수를 한 것으로 생각됩니다.




여기도 같은 문제가 있습니다.$GLOBALS 어레이를 사용하셔도 됩니다.

$GLOBALS["variable"] = "123"; include ("my.php"); 

또, 다음의 조작도 실행할 필요가 있습니다.

$myvar = "123"; include ("my.php");
....
echo $GLOBALS["myvar"]; 

좋은 하루 되세요.




GET 파라미터를 기반으로 변수를 설정하는 파일이 있는 경우 이 문제가 발생하였습니다.또한 이 파일은 대규모 콘텐츠 관리 시스템의 다른 부분에서 올바르게 작동했기 때문에 업데이트할 수 없었습니다.그러나 실제로 URL 문자열에 있는 매개 변수를 사용하지 않고 include 파일을 통해 코드를 실행하려고 했습니다.간단한 해결책은 첫 번째 파일의 GET 변수를 다른 변수와 마찬가지로 설정하는 것입니다.

대신:

include "myfile.php?var=apple"; 

다음과 같습니다.

$_GET['var'] = 'apple'; include "myfile.php";