我试图给一个变量传递到一个包含文件。 我的主人改变了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
,必须改为1
在php.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