[英]globals php help
我正在嘗試在僅用於向其發布數據的文件中使用全局變量。 全局未在該頁面上注冊。 如何在該頁面上訪問全局變量。
編輯也許我不是太清楚,所以讓我把它清除掉。 我有這些文件
的index.php
global $user;
echo $user->uid;
post.php中
global $user;
echo $user->uid;
現在從index.php我通過jquery發布到post.php。 但是,當我從post.php回顯$ user-> uid時,它沒有回顯,但是當我從index.php回顯它時,它正在顯示它。 如何從post.php獲取$ user-> uid。
從全局范圍訪問變量的另一種方法是使用特殊的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
,並使用include_once('init_user.php');
將index.php
和post.php
包含在文件中include_once('init_user.php');
我同意mattbasta的觀點,全球人因安全原因而被禁用。 您仍然可以使用它,但是正確的方法是使用會話。
另一件事是,您說:“現在從index.php我通過jquery發布到post.php。” 您正在使用一些Ajax通話嗎? 如果不是,我不明白為什么要使用JS來執行此操作...如果要通過Ajax發送數據,並且只想發送此參數,請嘗試以下操作:
<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 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.