眾所周知,在PHP的函數中,如果想使用全域變量,一種是使用超全域變數$GLOBALS
,另一種是在函數中使用 global
關鍵字宣告,使用超全域變數$GLOBALS的方式大家都知道了,今天來好好聊聊使用global方式來宣告變數。
我們來看如下範例:
$a = 1; $b = 2; function test() { global $a, $b; } test();
當我們執行test()函數時,在記憶體中變數的狀態是什麼樣的呢?如下圖所示
我們宣告了test函數,當呼叫test()函數時,global會在函數中宣告兩個局部變數$a, $b,並且分別指向全域變數$a和$b,此時的臨時變數$a和$b相當於全域變數$a和$b的引用。所以我們在函數中修改局部變數$a和$b的值就等於修改了全域變數的值。
$a = 1; $b = 2; function test() { global $a, $b; $a = 11; $b = 12; unset($a); unset($b); } test(); echo $a; echo '<br>'; echo $b;
瀏覽器上列印輸出:
11 22
上面的程式碼中也使用了unset(),透過echo輸出能輸出全域變數$a, $b的值,這也說明test ()函數裡透過global關鍵字宣告的$a和$b只是局部變量,unset()只是斷開了局部變數與全域變數的參考。
我們來看另一種情況,如果我們在test函數中宣告的變數在全域變數中並沒有呢?
先說結論:如果在函數中使用global關鍵字聲明的變數在全域作用域並沒有同名變量,那麼會先創建同名全域變量,再在函數中創建局部變量,同時將全域變數的引用指向局部變數。
function test() { global $a, $b; $a = 11; $b = 22; unset($a); unset($b); } echo $a; echo '<br>'; echo $b;
透過瀏覽器輸出:
11 22
上面的程式碼,我們在test函數中使用global宣告了變數$a, $b,雖然全域作用域並沒有宣告$ a和$b,但是global還是會先創建全域變數$a和$b,然後在test函數中創建$a, $b,然後把全域變數的引用指向test函數的局部變數。所以即使我們在函數中unset了$a和$b,在函數執行完成後我們依然能印出$a和$b,因為全局變數中已經存在著兩個變數了。
所以我們最終可以對得出如下結論:
在函數中使用global宣告變數時,會先在全域作用域中尋找是否有同名變量,如果有則將該全域變數的引用指向使用global宣告的同名局部變數。如果全域作用域沒有同名變量,那麼就先建立同名全域變量,再建立局部變量,然後把全域變數的引用指向局部變數。
相關教學:PHP影片教學
#以上是談PHP中的global全域變量的詳細內容。更多資訊請關注PHP中文網其他相關文章!

絕對會話超時從會話創建時開始計時,閒置會話超時則從用戶無操作時開始計時。絕對會話超時適用於需要嚴格控制會話生命週期的場景,如金融應用;閒置會話超時適合希望用戶長時間保持會話活躍的應用,如社交媒體。

服務器會話失效可以通過以下步驟解決:1.檢查服務器配置,確保會話設置正確。 2.驗證客戶端cookies,確認瀏覽器支持並正確發送。 3.檢查會話存儲服務,如Redis,確保其正常運行。 4.審查應用代碼,確保會話邏輯正確。通過這些步驟,可以有效診斷和修復會話問題,提升用戶體驗。

session_start()iscucialinphpformanagingusersessions.1)ItInitiateSanewsessionifnoneexists,2)resumesanexistingsessions,and3)setsasesessionCookieforContinuityActinuityAccontinuityAcconActInityAcconActInityAcconAccRequests,EnablingApplicationsApplicationsLikeUseAppericationLikeUseAthenticationalticationaltication and PersersonalizedContentent。

設置httponly標誌對會話cookie至關重要,因為它能有效防止XSS攻擊,保護用戶會話信息。具體來說,1)httponly標誌阻止JavaScript訪問cookie,2)在PHP和Flask中可以通過setcookie和make_response設置該標誌,3)儘管不能防範所有攻擊,但應作為整體安全策略的一部分。

phpsessions solvathepromblymaintainingStateAcrossMultipleHttpRequestsbyStoringDataTaNthEserVerAndAssociatingItwithaIniquesestionId.1)他們儲存了AtoredAtaserver side,通常是Infilesordatabases,InseasessessionIdStoreDistordStoredStoredStoredStoredStoredStoredStoreDoreToreTeReTrestaa.2)

tostartaphpsession,usesesses_start()attheScript'Sbeginning.1)placeitbeforeanyOutputtosetThesessionCookie.2)useSessionsforuserDatalikeloginstatusorshoppingcarts.3)regenerateSessiveIdStopreventFentfixationAttacks.s.4)考慮使用AttActAcks.s.s.4)

會話再生是指在用戶進行敏感操作時生成新會話ID並使舊ID失效,以防會話固定攻擊。實現步驟包括:1.檢測敏感操作,2.生成新會話ID,3.銷毀舊會話ID,4.更新用戶端會話信息。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版
中文版,非常好用

記事本++7.3.1
好用且免費的程式碼編輯器

Dreamweaver Mac版
視覺化網頁開發工具