使 PHP 变量跨多个网页成为全局变量
Posted
技术标签:
【中文标题】使 PHP 变量跨多个网页成为全局变量【英文标题】:Making a PHP variable global accross multiple web pages 【发布时间】:2015-08-06 08:23:46 【问题描述】:如果这是一个幼稚的问题,我对 php 还很陌生,很抱歉,但我想构建一个 php 函数库,该函数库利用一个跨多个页面的全局变量。我正在使用这3个文件进行测试:
functions.php
<?php
function report()
echo "Value = ".$GLOBALS["var"];
?>
index.php
<?php
$var = "ABC";
require "functions.php";
echo "<h1>index.php</h1>";
report();
?>
<br /><br />
<input type=button onClick="location.href='page2.php'" value="Page2">
page2.php
<?php
require "functions.php";
echo "<h1>page2.php</h1>";
report();
?>
index.php
调用的 report
函数按预期回显Value = ABC
。但是当单击Page2
按钮时,page2.php
调用的report
函数会显示$GLOBALS["var"]
在functions.php
中引发的Undefined index
错误。
当page2.php
引用它时,我想使用$GLOBALS["var"]
。谁能告诉我如何启用它?感谢您的帮助!
【问题讨论】:
您需要sessions。 $GLOBALS 仅在脚本中是全局的。 如果你打开page2.php
,你没有定义$GLOBALS["var"]
。
sessions
的宾果游戏!我在index.php
和page2.php
的开头添加了:session_start();
,并将$_SESSION['var']
替换为所有全局var
引用。谢谢流浪汉。
Rizier123,我不确定如何在 page2.php
中定义 $GLOBALS["var"]
而不重新初始化它并丢失原始值?
【参考方案1】:
首先,这里有一些关于$_SESSIONS
变量的链接。
我已经更新了你的代码,让你成为一个例子。
functions.php
<?php
function report()
if(isset($_SESSION['var']))
echo "Value = ". $_SESSION['var'];
?>
index.php
<?php
session_start();
?>
<html>
<head>
</head>
<body>
<?php
$_SESSION['var'] = "ABC";
require('functions.php');
echo "<h1>index.php</h1>";
report();
?>
<br><br>
<input type="button" onClick="location.href='page2.php'"
value="Page2">
</body>
page2.php
<?php
session_start();
?>
<html>
<head>
</head>
<body>
<?php
require ('functions.php');
echo "<h1>page2.php</h1>";
report();
?>
</body>
</html>
【讨论】:
实际上,将HTML放在session_start();
之上被认为是在header之前输出,因此最好先声明它<?php session_start(); ?>
然后再声明<html> <head>...
- 参考php.net/manual/en/function.error-reporting.php和***.com/questions/8028957/…跨度>
好的 - 似乎每个人都在这个主题中学到了 - 我修改然后编码。编辑:完成。【参考方案2】:
推荐:声明你的变量。或者使用 isset() 在引用它们之前检查它们是否被声明。
其次你需要定义一个会话
<?php
function report()
echo "Value = ". **$_SESSION['var']**;
?>
并在您的所有页面中使用 :)
即,对于第 1 页,
<?php
session_start();
$_SESSION['var'] = "XYZ";
require('functions.php');
report();
?>
还有 fot page2,
<?php
session_start();
require ('functions.php');
report();
?>
希望对你有帮助:)
【讨论】:
以上是关于使 PHP 变量跨多个网页成为全局变量的主要内容,如果未能解决你的问题,请参考以下文章