2012-06-10 39 views
0

如何在兩個外部腳本中傳遞一個全局變量?Php,兩個外部腳本的全局變量

<div> 
<!-- INCLUDEPHP 1.php --> 
</div> 
<div> 
<!-- INCLUDEPHP 2.php --> 
</div> 

我試圖在1.php和`2.phpp創建全局變量,但沒有奏效。

1.PHP:

<?php 
global $someVar; 
$sql = ...; 
$someVar= $db -> sql_query($sql); 
?> 

2.PHP:

<?php 
global $someVar; 
echo "$someVar"; 
?> 

難道我做錯了什麼?

+3

什麼是包含代碼,http?要麼 ? – 2012-06-10 20:45:16

+1

我不認爲你不應該使用全局變量(不是很好的做法)。你可能會使用$ _SESSION來完成你所需要的。 – Haroon

+1

@哈羅:不,不,不!在構建頁面時,不要僅使用會話來在腳本之間進行通信!其http代碼爲 – Eric

回答

2

我會嘗試,包括通過PHP腳本:

<div> 
<?php require "1.php" ?> 
</div> 
<div> 
<?php require "2.php" ?> 
</div> 
+0

這工作謝謝 – wtsang02

+1

@ wtsang02:你在做什麼?<! - INCLUDEPHP 2.php - >'你的實際代碼? – Eric

+0

所以問題是,包含的語法,注意與變量? – 2012-06-10 21:12:09

1

如果同時包括被裝載到同一個頁面,並在全球範圍內已經存在的變量,所有的功能都可以與全球語句訪問它們。由於一切都已經是全球性的,所以在全球範圍內不需要聲明,只在函數內部。這也允許函數通過將它們轉換到全局範圍來共享變量。但是,我不會假裝完全意識到這一點,所以最好建議在大型複雜應用程序中謹慎使用全局範圍,因爲如果命名時它們可能變得非常不穩定公約放鬆。

基本上,我們正在尋找,

function arrow() { global $a; $a = "arrow"; return $a; } 
function sky() { global $b; $b = "sky"; return $b; } 
echo "I shot an " . arrow() . " into the " . sky() . "."; 
echo "I shot an $a into the $b."; 

這是孩子們的遊戲,它演示瞭如何暴露變量,坐在那裏,沒有保護。現在另外一個功能可以出現並將整件事情分開:

function whammo() { global $a, $b; $c = $a; $a = $b; $b = $c;} 
echo "I shot an " . arrow() . " into the " . sky() . "."; 
whammo(); 
echo "I shot an $a into the $b."; 

明白我的意思嗎?

您的解決方案可能在於某種關閉,其中包含所有需要此「全局」的功能。它會得到更好的保護。