gpt4 book ai didi

mysql - 撤消 mysql_real_escape_string

转载 作者:行者123 更新时间:2023-11-30 01:25:41 24 4
gpt4 key购买 nike

我的每个 php 页面的顶部都有以下代码:

<?php

function name_format($str)
{
return trim(mysql_real_escape_string(htmlspecialchars($str, ENT_QUOTES)));
}
?>

foreach ($_POST as $key => $value) {
if (!is_array($value))
{
$_POST[$key] = name_format($value);
}
}

到目前为止,这非常有用。我经历过如果我想显示 <textarea> 中的文本在将其写入数据库之前,它会显示“\r\n”而不是正常的换行符。即使我尝试执行以下操作,它也不起作用:

$str = str_replace("\r\n", "<br>", $str);

最佳答案

您在这里犯的错误是用您希望适合所有上下文的字符串版本覆盖$_POST(使用 >mysqli_real_escape_stringhtmlspecialchars 同时)。

您应该保持原始值不变,并在使用它的地方对其进行转义,使用适合该上下文的函数。 (这就是为什么 PHP 早期版本的“魔术引号”功能被普遍认为是一个坏主意的原因之一。)

因此,在数据库代码中,您将准备一个用于 SQL(特别是 MySQL)的变量:

$comment = mysqli_real_escape_string(trim($_POST['comment']));

在您的模板中,您将准备一个用于 HTML 的变量:

$comment = htmlspecialchars(trim($_POST['comment']));

可能会添加对 nl2br() 的调用根据需要在 HTML 上下文中。

关于mysql - 撤消 mysql_real_escape_string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18022313/

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