首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有区别地使用stripslashes()

有区别地使用stripslashes()
EN

Stack Overflow用户
提问于 2009-07-24 11:36:29
回答 3查看 472关注 0票数 1

我的php应用程序使用stripslashes()来处理magic_quotes,但我只想让它去掉magic_quotes输入的斜杠,因为允许用户输入一个\。

EN

回答 3

Stack Overflow用户

发布于 2009-07-24 11:40:26

stripslashes不会随意删除斜杠。

如果魔术引号是开的,那么它将转义斜杠,用'\\'替换'\',并且stripslashes应该正确地撤销魔术引号的转义,用'\'替换'\\'来返回用户输入的内容。

我想你可能只想要这样的东西:

代码语言:javascript
复制
// Ripped from the PHP manual (http://us3.php.net/manual/en/function.get-magic-quotes-gpc.php)
if (get_magic_quotes_gpc()) {
    $lastname = stripslashes($_POST['lastname']);
}
else {
    $lastname = $_POST['lastname'];
}

在该代码的末尾,除了用户输入的斜杠之外,$lastname不应该有任何斜杠。

另外,魔术引号是一个安全问题,在更新版本的PHP中已被弃用(请参阅the docs)。

票数 8
EN

Stack Overflow用户

发布于 2009-07-24 12:38:26

使用magic_quotes_gpc无论如何都不是一个好主意,官方从5.3开始就不推荐使用它了,PHP5.5也没有了。更重要的是(而且是立即的),它鼓励了弱安全性,因为它不会真正做任何有用的事情,而这些事情是mysql_real_escape_string、预准备语句或存储过程无法完成的。

如果你能摆脱它,请去做…

票数 2
EN

Stack Overflow用户

发布于 2009-07-24 11:41:53

尝试滚动您自己的编码/解码函数,如下所示:

代码语言:javascript
复制
function doEncode($string){
     return addslashes(str_replace("\","\\",$string));
}

function doDecode($string){
    return str_replace("\\","\",stripslashes($string));
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1177105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档