PHP传递变量包括(PHP pass variable to include)

2019-06-17 17:03发布

我试图给一个变量传递到一个包含文件。 我的主人改变了PHP版本,现在什么解决方案,我尽量不工作。

我想我已经尝试过每一种选择,我能找到。 我敢肯定,这是最简单的事情!

变量需要设置和调用第一个文件进行评估(它实际上是$_SERVER['PHP_SELF']并且需要返回文件,而不是包含的路径second.php )。

OPTION ONE

在第一个文件:

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

在第二个文件:

echo $variable;

选项二

在第一个文件:

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

方案三

$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是。

我在想什么?

谢谢!

Answer 1:

方案3是不可能的 - 你会得到的PHP文件的渲染输出,完全按照自己的,如果你打在你的浏览器的URL。 如果你有原始PHP代码,而不是(只要你愿意),那么所有的网站的源代码将被暴露,这是通常不是一件好事。

选项2并没有太大的意义 - 你会隐藏变量的函数,并接受PHP的变量范围。 也You'ld必须有$var = passvariable()的地方,以获取“内部”变量设置为“外部”,而你又回到了起点。

选项1是最实用的。 include()在指定文件中基本上都会发出声音并执行它在那里,仿佛在文件中的代码是从字面上父页面的一部分。 它看起来像一个全局变量,其中大多数人在这里皱眉,但PHP的解析语义,这两个是相同的:

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

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


Answer 2:

您可以使用提取物()函数
Drupal的使用它,在它的主题()函数。

这是一个渲染功能$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.php:

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

./header.php:

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


Answer 3:

考虑到一个包含在PHP在最基本的层面上statment需要从文件并将其粘贴到您把它称为代码和事实,即在手动状态包括以下内容:

当包括一个文件,它包含的代码继承在其上包括发生线的可变范围。 任何可用在调用文件在该行的变量将被调用的文件中可用,从该点向前。

这些东西让我觉得是有不同势问题产品总数。 也可选3号永远不会工作,因为你没有重定向到second.php你只是包括它和选项号2是围绕只是一个奇怪的工作。 的最基本的例子包括statment在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

?>

考虑到选择排名第一的是最接近这个例子(尽管比较复杂,那么它应该是),它不工作,它让我觉得你做的包含语句相对于根或类似的错误路径错误(问题)。



Answer 4:

我这里有同样的问题,你可以使用$ GLOBALS数组。

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

它也应该运行这样做:

$myvar = "123";
include ("my.php");

....

echo $GLOBALS["myvar"];

祝你今天愉快。



Answer 5:

在问候了OP的问题,特别是“变量需要设置和调用第一个文件进行评估(它实际上是‘$ _ SERVER [’PHP_SELF‘]’,并且需要返回该文件的路径,而不是包含第二。 PHP)。”

这会告诉你什么文件包含的文件。 将这个包含文件。

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


Answer 6:

根据PHP文档(见$ _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.


Answer 7:

我碰到的这个问题,我有这样的基础上设置GET参数变量的文件。 而无法更新的文件,因为它工作正常上一个大的内容管理系统的另一部分。 然而,我想运行的代码通过一个包含文件,而不在URL字符串实际上作为参数。 简单的解决办法是,你可以在第一个文件,你会任何其他变量设置的GET变量。

代替:

include "myfile.php?var=apple";

这将是:

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


Answer 8:

我发现,包括参数必须是整个文件路径,而不是相对路径或部分路径这个工作。



Answer 9:

这为我工作:要包住第二个文件转换成函数的内容,具体如下:

firstFile.php

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

    echoFunction("message");

secondFile.php

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


Answer 10:

PHP 5.2.0添加allow-url-include指令(默认为0 ,必须改为1php.ini ),这意味着你可以通过一个完整的http: URL到include声明。

通过添加变量作为查询字符串到这个URL,你可以通过一个可变进包含的文件 - 尽管有一些性能损失:

include 'http://www.myservername.com/includes/second.php?variable=apple';

当然,你也必须设置second.php处理$_GET['variable']并将其应用到输出。



Answer 11:

做这个:

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


文章来源: PHP pass variable to include