2013-10-28 120 views
0

現狀:PHP create_function返回false

這工作:

$functionCode = 'return ($myvar1 == "something") && ($myvar2 != "");'; 
$newfunc = create_function($functionParamsConcat, $functionCode); 

但問題是,funcitonCode是動態的,且布爾表達式裏面可以改變(這是從數據庫中獲取)。 confussing部分是,當我從數據庫中檢索SAME functionCode並將其分配給變量時,create_function返回的$ newfunc始終爲false。

任何想法?謝謝

+0

您確定引文不會被轉義嗎?更重要的是,你爲什麼要從數據庫中構建函數?如果有人有機會注入SQL,他們可能會造成嚴重的損失。 –

+0

我嘗試使用PHP內置的函數addslashes來轉義整個functionCode,失敗,$ newfunc總是爲false。 (在這種情況下忘記sqlinjection,雖然我感謝您的關注) – mpinvidio

回答

0

$ functionCode = '回報($ myvar1 == 「東西」)& &($ myvar2 = 「!」);'; $ newfunc = create_function($ functionParamsConcat,$ functionCode);

在檢查不使用=,因爲它會設置它,但使用==或者===
!使用!==

+0

你是什麼意思?我沒有看到你的代碼與我的區別。謝謝。 – mpinvidio

+0

我說不要使用!=但是使用!== –