题
我试图用一个全球性的,在一个文件,该文件是仅仅是用来发布的数据。全球不被注册在该网页上。我如何可以获得全局可在该网页上。
编辑也许我不太清楚因此,让我清楚了。我有这些文件
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
。
您必须记住,当用户提交表单,并重定向到post.php
,在index.php
变量早已不复存在。 PHP处决短命不像正常桌面应用程序。
不管你在做index.php
拿到$user
对象必须在post.php
重复。如果你不希望复制的代码,只要把它在某些文件init_user.php
,并有使用index.php
都post.php
和include_once('init_user.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
希望这有助于你。