2012-05-16 55 views
-1

好吧,我試圖清理我的代碼從注射等,等等。而我得到這個致命的錯誤:致命錯誤:無法在寫入上下文中使用函數返回值

致命錯誤:在寫上下文....

不能使用函數的返回值在此處,它會引發錯誤的行:

$val=mysql_real_escape_string($val)=$_SESSION['val']=strip_tags($_POST['val']); 

爲什麼拋出這個錯誤?

更新:好的,謝謝你的回答,我把mysql_real_escape_string($val)移到代碼中的另一部分,這就修正了錯誤。

+0

你想做什麼? – PeeHaa

+0

你想讓哪個變量安全,'$ _SESSION ['val']'或'$ _POST ['val']'? – vimist

+0

我希望這兩個安全$ val被髮送到DB和$ _SESSION ['val']仍然在頁面 – grasshopper

回答

6

您正在將一個值(存儲在$_SESSION['val']中的strip_tags的返回值)分配給函數! 我想你想的:

$val=mysql_real_escape_string($_POST['val']); 

,並在關於對HTTP參數看使用strip_tags
http://www.php.net/manual/en/info.configuration.php#ini.magic-quotes-gpc

另一件事要注意:

請停止與古編寫新的代碼mysql_ *函數。他們不再維護和社區已經開始deprecation process。相反,您應該瞭解prepared statements並使用PDOMySQLi。如果你不能決定,this article將有助於選擇。如果你在意學習,here is a quite good PDO-related tutorial

+0

我已經在論壇上多次被告知有關PDO和MySQLi,我稍後將更改我的代碼,此代碼僅適用於PHP – grasshopper

+0

@grasshopper的入門課程,您現在應該使用PDO/mysqli開始。沒有理由。閱讀我的pdo mysql教程(草案)的介紹:https://gist.github.com/2362466 – PeeHaa

2

您只能將值分配給變量。

相關問題