在脚本之间传递PHP变量

时间:2014-10-09 03:07:41

标签: php variables scripting

我对此有困难,所以我用Google搜索并在此处阅读。最后,我尝试了W3网站的2个小摘录,在Z1.php和Z2.php这两个文件中如下:

Z1

<?php
// Start the session
session_start();
include ('z2.php'); (I added this)

?>
<html>
<body>

<?php
// Set session variables
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>

</body>
</html> 

我在行中加入Z2 - Z2然后是:

<?php
session_start(); (note: I tried with and without this)
?>
<html>
<body>

<?php
// Echo session variables that were set on previous page
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
?>

</body>
</html> 

我把所有这些都放到Zend中,得到了输出

最喜欢的颜色是。
最喜欢的动物是。

我需要这个让我使用phpqrcode,它说的是调用QR码:&#34;警告!它应该是由脚本生成的第一个和唯一的输出,否则输出的其余部分将落在PNG二进制内部,确保打破它#34;而且,确实如此。所以我认为2个脚本将是最佳选择。

我之前没有尝试在脚本之间传递变量,因此欢迎在我的试用中尝试理解这种方法并让我走上正确的道路时,有一两个批判性的眼睛。

保罗

1 个答案:

答案 0 :(得分:0)

您在此遇到的问题是您在第一个文件中包含z2.php脚本。现在想象include就像复制并粘贴在那里的第二个脚本中的php代码一样。你可以开始使用session来获取变量,但是在创建它们之前尝试echo。在定义z2.php变量后,请尝试添加Session,并从那里查看其工作原理。

简单地说,试着取消任何include。你从W3Schools那里拿了this example。只需像你一样创建两个单独的文件。调用session_start()并创建session变量并尝试显式访问其他文件,看看是否可以访问它们。

来自documentation -

  

当包含文件时,它包含的代码将继承发生包含的行的变量范围。从那时起,调用文件中该行可用的任何变量都将在被调用文件中可用。但是,包含文件中定义的所有函数和类都具有全局范围。

如果你在另一个脚本中include脚本,那么你并没有真正传递会话变量。事实上,你可以在不使用Sessions的情况下实现所做的。

//foo.php
<?php
$color = 'green'; 
$fruit = 'apple';
?>

//bar.php
<?php
echo "A $color $fruit"; // A
include 'foo.php';
echo "A $color $fruit"; // A green apple
?>

这样的东西是完全合法的,并且在PHP中可以完美地运行。如果您确实想要检查当前设置中的Session个变量,则可以通过添加以下行,而不是include使用z2.php的{​​{1}}重定向到z1.php在文件的末尾:

header("Location: z2.php");
die();

希望这能让你开始朝着正确的方向前进。