gpt4 book ai didi

php - 只有硬编码的字符串必须在 PHP 和 Mysql 中转义

转载 作者:行者123 更新时间:2023-11-29 00:42:42 25 4
gpt4 key购买 nike

我最近将服务器从 Ubuntu 换成了 UNIX。在 MySQL 和 PHP 的 Ubuntu 安装上,所有字符串在插入数据库之前都需要转义,并且在没有额外转义字符的情况下从数据库中读取。但是,在新系统上,用户输入表单的字符串在未被修改的情况下会在未转义时正常插入到数据库中。如果转义,则会添加额外的字符。但是后来我需要用一个简单的 .= 向用户输入的字符串添加一个标记,除非转义,否则该字符串拒绝输入数据库。并且字符串的原始用户输入部分具有额外的转义字符。有什么简单的解决方案吗?(PHP 5.2.17、MySQL 5.1、Apache 2.2.19)

最佳答案

关于魔术引号 及其影响脚本的原因的描述是 here .基本上,此功能会影响来自浏览器的用户输入,但不会影响您自己创建的其他字符串。

听起来相关设置 magic_quotes_gpc 在您的旧服务器上已关闭,但在新服务器上已激活。我总是根据运行时的设置删除魔术引号,以便在所有机器上具有相同的设置,即使我无法控制 php.ini

尝试在任何输入参数处理之前将其放入中央包含文件中:

// Strip slashes from a string or array recursively
function stripshashesr($text)
{
if (is_array($text))
{
foreach($text as $key => $value) $text[$key]=stripshashesr($value);
return $text;
}
return stripslashes($text);
}

// Strip slashes from GPC
if (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc())
{
foreach($_GET as $key => $value) $_GET[$key]=stripshashesr($value);
foreach($_POST as $key => $value) $_POST[$key]=stripshashesr($value);
foreach($_REQUEST as $key => $value) $_REQUEST[$key]=stripshashesr($value);
foreach($_COOKIE as $key => $value) $_COOKIE[$key]=stripshashesr($value);
}

这会根据设置自动删除魔术引号。

关于php - 只有硬编码的字符串必须在 PHP 和 Mysql 中转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11597918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com