2012-02-21 39 views
1

我正在調試一些客戶端PHP代碼,讓我難住。正如這個僞示例所示,表單提交的接收端有代碼處理表單值,但沒有明顯分配這些值:是否有另一種方法來分配我不知道的PHP變量?

(在表單提交中,其中表單包含字段'name'和'位置'):

echo "The name is = ". $name; 
echo "The position is = ". $position; 

此代碼是大型應用程序的一部分,在此之前調用其他文件的代碼。但關鍵的一點是,如果我在整個代碼庫中搜索'$ name =',它永遠不會顯示出來。怎麼可能請求變量被分配到$name?有沒有另一種方法來分配值的變量在PHP 其他$var = value

我唯一的線索是,這個項目使用Smarty,我不知道任何關於。

+2

'register_globals'? – 2012-02-21 20:00:07

回答

5

這可能是創建代碼的人正在使用register_globals的服務器上。例如,這樣做是通過表單提交而不是填充$ _POST或$ _GET數組來創建常規全局變量。

+0

謝謝itsmequinn,Jasmo和JacobM-我剛剛受過教育 – Yarin 2012-02-21 20:08:10

1

對我來說聽起來像是有人將這些變量包含在內,以期與他們一起做更多的事情,但從來沒有這樣做過。除非包含php頁面將值分配給這些變量,否則不會有任何變化。

2

我猜你的服務器有register_globals的設置上,它會自動從張貼的項目產生變數:

$_POST['foo'] === $foo 
5

如果register_globals指令已被設置爲true在php.ini,那麼所有POST屬性也將現身作爲個體變量,按照你描述的方式。請注意,該指令默認爲false,並且不推薦使用此指令。

1

嘗試關閉錯誤報告級別了,如果使用這些變量,但尚未初始化,警告將顯示

3

當你看smarty documentation,你可以看到,變量是這樣分配(從鏈接頁面複製):

<?php 

$smarty = new Smarty(); 

$smarty->assign('firstname', 'Doug'); 
$smarty->assign('lastname', 'Evans'); 
$smarty->assign('meetingPlace', 'New York'); 

$smarty->display('index.tpl'); 

?> 
+0

提及Smarty(即使可能不正確);然而,這不會影響'tpl'模板文件中可用的變量嗎? – 2012-02-21 20:06:34

+0

我不確定,我從來沒有真正使用過smarty,但我想它使用了一些方法將變量分配給視圖,像'assign()'。我只是想給出一個提示,以尋求代碼 – dbrumann 2012-02-21 20:10:51

+0

還有什麼其他東西?我想知道這是否僅適用於tpl文件?有人知道嗎? – Yarin 2012-02-21 20:13:33

3

從技術上說是的。

$x = 'name'; 
$$x = 'harry'; 
echo 'Yer a wizard '.$name; 

(我會感到驚訝,如果這是真正的原因)

+1

Woa,nasty.4321 – Almo 2012-02-21 20:05:59

+0

但是,在所有源代碼頁面中快速搜索「位置」應該顯示這種情況的證據。 '名稱'可能太常見,無法搜索,但搜索'位置'並查看會發生什麼。讓我們知道這是發生了什麼! – scottcarmich 2012-02-21 20:12:37

2

也許這就是register_globals疾病的再次爆發?

這被認爲已經消失,但一次又一次的表面!

相關問題