使 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.phppage2.php 的开头添加了:session_start();,并将$_SESSION['var'] 替换为所有全局var 引用。谢谢流浪汉。 Rizier123,我不确定如何在 page2.php 中定义 $GLOBALS["var"] 而不重新初始化它并丢失原始值? 【参考方案1】:

首先,这里有一些关于$_SESSIONS 变量的链接。

PHP.net - Sessions *** - How php sessions works

我已经更新了你的代码,让你成为一个例子。

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之前输出,因此最好先声明它&lt;?php session_start(); ?&gt;然后再声明&lt;html&gt; &lt;head&gt;... - 参考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 变量跨多个网页成为全局变量的主要内容,如果未能解决你的问题,请参考以下文章

javascript使函数内部的变量成为全局变量

PHP - 跨所有 php 线程访问全局变量

Javascript中跨多个文件的全局变量

调用 $.get 方法时如何使 javascript 变量成为全局变量? [复制]

如何在php中跨线程共享全局变量?

关于JavaScript全局变量的问题(生存周期,是不是跨页面)