2015-01-02 42 views
0

所以,我有這樣的代碼:PHP:str_replace函數不工作

<?php 
    include '../config.php'; 
    $query=$_GET['q']; 
    //replace 
    echo str_replace('\','',$query); 

    $sql=mysql_query($query) or die("Query not executed!"); 
    echo $query; 
    echo "\n //executed"; 

    mysql_close(); 

    ?> 

的問題是在$ _GET,例如使用當 ',例如:「更新用戶設置幣= 3其中username ='管理員返回:「更新用戶設置硬幣= 3其中username = \ '管理員\'應該=> '管理員' 「」

+6

也就是說**非常危險**代碼。您允許用戶將任意SQL傳遞到您的數據庫並執行它。什麼是阻止某人摧毀你的數據庫?更新他們的用戶記錄並給予他們自己的總特權你應該**感謝**你是一個過時的PHP安裝,它仍然啓用了register_globals。丟棄這段代碼,將它燒成灰燼,將灰燼分散到不同的大洲,然後在做其他事情之前學習如何編寫安全的PHP代碼。 –

+1

這不會引發語法錯誤嗎? – Flosculus

+0

我不記得連接是\或/,但如果它是\,你將不得不添加一個額外的\我相信。 –

回答

3

'\' 是一個特殊字符。 嘗試,而不是:

echo str_replace('\\','',$query); 
0

而是字符串替換,我會建議你使用字符串爆炸

語法:array explode (string $delimiter , string $string [, int $limit ])

你可以看看here