我试图用一个全球性的,在一个文件,该文件是仅仅是用来发布的数据。全球不被注册在该网页上。我如何可以获得全局可在该网页上。

编辑也许我不太清楚因此,让我清楚了。我有这些文件

index.php

global $user;
echo $user->uid;

post.php

global $user;
echo $user->uid;

现在从index.php 我发布到post.php 通过的!然而,当我echo$user->uid从post.php 它不是呼应,但是当我回它index.php 它是表示它。我怎么能得到那$user->uid访问post.php.

有帮助吗?

解决方案

从全球范围内访问变量另一种方法是使用特殊的PHP定义$ GLOBALS阵列。

php.net

实施例
<?php
$a = 1;
$b = 2;

function Sum() {
    $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
} 

Sum();
echo $b;
?>

其他提示

我觉得你应该寻找到会话中,而不是全局。从它听起来,你是在一个页面上注册一个变量,那么当用户移动到另一个页面,你想该变量是可用的。

会议将让你这样做。简单地使用以下代码:

<?php
session_start();
$_SESSION['my_var'] = 'foo';

和后续网页上...

<?php
session_start();
echo $_SESSION['my_var'];

将输出foo

http://www.php.net/manual/en/book .session.php

您必须记住,当用户提交表单,并重定向到post.php,在index.php变量早已不复存在。 PHP处决短命不像正常桌面应用程序。

不管你在做index.php拿到$user对象必须在post.php重复。如果你不希望复制的代码,只要把它在某些文件init_user.php,并有使用index.phppost.phpinclude_once('init_user.php');包括文件

如果你需要一个全球内部的功能这样做

function phpFoobarFunction(){
  global $my_global;
}

参考关于 范围

对于 超全局变量 喜欢 $_POST, $_GET (等等),他们都可以 任何地方.


从你的更新问题,不能分享变量之间两种不同称呼的PHP.你将拥有:

  • 来重建你的$user类realoading从数据库(或源)
  • 股票的目的在$_SESSION
  • 通过用户的对象通过javascript(但是这是危险的,因为用户可以编辑),并增加它有params到你的阿贾克斯的电话。

参考更多的关于如何PHP玩届会议 还有

我同意mattbasta,全局通过安全原因禁用。您仍然可以使用它,但正确的方法是使用会话。

另一件事是,你说:“从现在的index.php我张贴通过jQuery来post.php中。” 您是否使用了一些Ajax调用?如果不是我不明白,为什么用JS做到这一点...如果您发送通过Ajax的数据,只需要发送此PARAM试试这个:

<input style="display:none" type="hidden" id="uid" name="uid" value="<?= $user->uid ?>" />

,然后从Ajax调用一样处理:

$.ajax({
    type: "POST",
    url: "/post.php",
    data: "uid=" + uid + "&otherVar=" + otherVar, //and so on..
    success: function() {
        //Here you can notify the user that the script ran successfully 
        }
});//end of ajax

希望这有助于你。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top