簡體   English   中英

全局PHP幫助

[英]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

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

您必須記住,當用戶提交表單並重定向到post.phpindex.php中的變量早已消失。 與普通的桌面應用程序不同,PHP執行是短暫的。

無論您在index.php做什么以獲取$user對象,都必須在post.php重復進行。 如果您不想復制代碼,只需將其放在文件init_user.php ,並使用include_once('init_user.php');index.phppost.php包含在文件中include_once('init_user.php');

如果您需要函數內部的全局變量,請執行以下操作

function phpFoobarFunction(){
  global $my_global;
}

有關范圍界定的參考

對於$_POST$_GET超全局變量 ,它們可以在任何地方使用


從更新的問題中,您將無法在兩個不同的PHP調用之間共享變量。 你將會擁有 :

  • 通過從數據庫(或源)重新加載來重新創建$ user類
  • 將對象存放在$ _SESSION中
  • 通過javascript傳遞用戶對象(但這很危險,因為用戶可以對其進行編輯)並將其具有params的參數添加到您的ajax調用中。

關於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM