2015-01-02 41 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