在我們當前的應用程序,我有一個包含類似的報告:如何在數據庫中存儲PHP條件屬性以備後用?
if($foo == 3 || $bar > 3) {
$e = someFunction();
};
但對於不同的客戶端相同的表達可能是:
if($foo == 3 || $bar == 5 && $foobar != 9) {
$e = someFunction();
};
是否有存儲一個直接的方法兩個不同的表達式,只是
$foo == 3 || $bar > 3 OR $foo == 3 || $bar == 5
位數據庫(MySQL),所以我不必硬編碼所有這些規則由客戶端或維護相同報告的客戶端版本。我試圖找出是否可以設置變量來替換條件。例如:
$conditions = $row_rsConditions['condition_row'] //Get $foo == 3 || $bar > 3 from the DB and store it as $conditions
if($conditions) {
$e = someFunction();
};
可能有100多個不同的客戶端,每個客戶端可能會有不同的表達式集。 我只是不確定正確/最好的方式來做到這一點。
UPDATE:
我想我明白使用PHP的eval()函數的問題。但由於我傾向於使用數據庫來存儲條件(尚不確定使用eval())的可能組合的數量,因此尚未確定使用eval())
如果沒有面向用戶的界面,它會產生任何區別(更安全)嗎?寫入條件字段/表?這可能是我們單獨管理的事情。
如何保存代碼數據庫,後來加載和執行使用'eval' ?當有人注入數據庫並讓你評估他的代碼時,你可能會遇到安全問題。 – Nobody
那麼問題是,在哪些情況下,那些條件內的操作員可以改變? – Deele
我認爲這是很糟糕的設計在數據庫存儲的邏輯,數據庫應僅用於數據 – Fivell