2014-10-09 129 views
0

我在这方面遇到了困难,所以我谷歌搜索,也在这里阅读。最后,我想2只小节录从W3网站,在2档Z1.php和Z2.php这样的:在脚本之间传递PHP变量

Z1

我把线包括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码:“警告!它应该是唯一的输出生成的脚本,否则其余的输出将落在PNG二进制内部,打破它肯定“而且,当然,它的确如此。所以我认为2个脚本将是要走的路。

我还没有尝试过在脚本之间传递变量,所以在我的试验中试图理解这种方法并将我设置在正确的路径上时,欢迎批判性的眼睛或两眼。

保罗

回答

0

你面对这里的问题是,你包括第一档的z2.php脚本。现在将include想象成与第二个脚本中的代码相同的php复制并粘贴到那里。你开始session你应该,以获得一个变量的挂起,但你尝试echo他们创建之前。在定义Session变量后,尝试包括z2.php,并从中查看它的工作原理。

简单来说,试着去掉任何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中工作得很好。

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

希望这样的:如果你真的要检查Session变量在当前的设置,你可以而不是使用include通过在文件的结尾添加以下行做一个重定向到z2.phpz1.php结束让你开始正确的方向。

+0

感谢您的非常明确的回应。在你的帮助下,我了解得更多(并且让我的剧本做我想做的!) Paul – calder 2014-10-09 06:19:22