programing

포함할 PHP pass 변수

goodsources 2023. 2. 2. 21:15
반응형

포함할 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() 함수를 사용할 수 있습니다.
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인 예는 다음과 같습니다. php는 인크루드 스테이트먼트를 포함합니다.

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";

OPTION 1은 PHP 7에서 작동했고 PHP 5에서도 작동했습니다.또한 변수 액세스에 포함된 파일에는 글로벌 범위 선언이 필요하지 않습니다. 포함된 파일 또는 "필수" 파일은 스크립트의 일부이므로 변수 선언 후에 "포함"을 작성해야 합니다.PHP.ini에서 변수 글로벌 스코프를 잘못 설정했을 수 있습니다.

첫 번째 파일에서 시도:

  <?php 
  $myvariable="from first file";
  include ("./mysecondfile.php"); // in same folder as first file LOLL
  ?>

두 번째 파일입니다.php

  <?php 
  echo "this is my variable ". $myvariable;
  ?>

잘 될 거야...PHP의 재인스톨을 시도하지 않는 경우.

OP의 질문에 대해서는, 「변수는, 발신측의 첫 번째 파일(실제로는 「$_SERVER['PHP_SELF')」로부터 설정해 평가해, 그 파일의 패스를 반환할 필요가 있습니다.」라고 하고 있습니다.

그러면 해당 파일이 포함된 파일이 표시됩니다.이 파일을 포함된 파일에 넣습니다.

$includer = debug_backtrace();
echo $includer[0]['file'];

오래된 질문인 건 알지만, 지금 우연히 발견했고 아무도 이 문제를 언급하지 않는 걸 봤어요.그래서 쓰고 있어요.

옵션도 이렇게 조정하면 작동합니다.

오리지널

옵션 1

첫 번째 파일:

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

두 번째 파일:

echo $variable;

수정하다

첫 번째 파일:

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

두 번째 파일:

global $variable;
echo $variable;

php docs($_SERVER 참조) $_SERVER['PHP_SELF']는 "현재 실행 중인 스크립트의 파일 이름"입니다.

INCLUDE 문장은 "지정된 파일을 포함 및 평가하고 포함 코드는 인크루드가 발생하는 행의 가변 범위를 상속합니다"(INCLUDE 참조).

$_SERVER['PHP_SELF']는 'second.php'의 코드로 사용하더라도 첫 번째 파일의 파일명을 반환할 것이라고 생각합니다.

아래 코드로 테스트했더니 예상대로 작동합니다(phpSelf는 첫 번째 파일의 이름입니다).

// In the first.php file
// get the value of $_SERVER['PHP_SELF'] for the 1st file
$phpSelf = $_SERVER['PHP_SELF'];

// include the second file
// This slurps in the contents of second.php
include_once('second.php');

// execute $phpSelf = $_SERVER['PHP_SELF']; in the secod.php file
// echo the value of $_SERVER['PHP_SELF'] of fist file

echo $phpSelf;  // This echos the name of the First.php file.

jQuery를 사용하여 변수를 추가하는 "second.php"에서 모든 것을 실행할 수 있습니다.

<div id="first"></div>

<script>
$("#first").load("second.php?a=<?php echo $var?>")
</scrpt>

$GLOBALS를 사용하는 다른 방법으로는 변수 값을 포함하기 전에 $_SESSION에 저장한 후 포함된 파일에서 읽는 방법이 있습니다.$GLOBALS와 마찬가지로 $_SESSION은 스크립트의 모든 곳에서 사용할 수 있습니다.

include 파라미터는 상대경로 또는 부분경로가 아닌 전체 파일경로여야 합니다.

이 방법은 효과가 있었습니다.두 번째 파일의 내용을 함수로 정리하려면 다음과 같이 하십시오.

first file.php

<?php
    include("secondFile.php");

    echoFunction("message");

second File.php

<?php
    function echoFunction($variable)
    {
        echo $variable;
    }

다음을 수행합니다.

$checksum = "my value"; 
header("Location: recordupdated.php?checksum=$checksum");

언급URL : https://stackoverflow.com/questions/11905140/php-pass-variable-to-include

반응형