변수를 포함 파일로 전달하려고 합니다.호스트가 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.php
2번 옵션은 이상한 문제일 뿐이에요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";