This question already has answers here:
With “magic quotes” disabled, why does PHP/WordPress continue to auto-escape my POST data?
                                
                                    (6个答案)
                                
                        
                                上个月关闭。
            
                    
我正在向数据库中插入一个textarea,但是在检索它时,每个引号前面都带有一个反斜杠。

我将电子邮件正文保存到数据库单元中。当使用wp_kses_post()转义与HTML相关的所有内容时,我建议使用wp_editor()转义所有内容,而将内容存储在数据库中时则不会。

我的问题可能与wp_kses_post()有关,也可能没有。问题是,当我将内容检索到电子邮件中时,我在电子邮件中输入的所有带有引号的内容都带有斜线...所以


  我是


变成


  我是


等等...

这让我发疯。我没有进行任何手动转义!

这就是我现在要做的:

在表单上:<textarea id="cc-email" name="cc-email" cols="80" rows="10"></textarea>

插入它:

$cc_email = $_POST['cc-email'];

$query = "INSERT INTO wp_forms (formID, cc_email)
                VALUES (?, ?)";
$stmt = mysqli_prepare($connection, $query) or error_log('stmt error: ' . mysqli_error($connection));
mysqli_stmt_bind_param($stmt, "is", $formID, $cc_email);
if (!mysqli_stmt_execute($stmt)) {
    error_log('stmt error: ' . mysqli_stmt_error($stmt));
}
mysqli_stmt_free_result($stmt);


输出:

$query = "SELECT cc_email FROM wp_forms WHERE formID=?";

$stmt = mysqli_prepare($connection, $query) or error_log('stmt error: ' . mysqli_error($connection));
mysqli_stmt_bind_param($stmt, "s", $formID);

if (!mysqli_stmt_execute($stmt)) {
    error_log('stmt error: ' . mysqli_stmt_error($stmt));
}
mysqli_stmt_bind_result($stmt, $cc_email);
mysqli_stmt_fetch($stmt);
mysqli_stmt_free_result($stmt);


根据我所做的研究,无需取消数据库的输出。但是为什么输出所有反斜杠转义呢?

最佳答案

我想到了。 WordPress自动转义$_POST数据...

谁会想到

我在这里找到了:With "magic quotes" disabled, why does PHP/WordPress continue to auto-escape my POST data?

我想我必须使用stripslashes()

关于php - 从数据库存储和检索电子邮件正文时,在引号前加反斜杠。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43646767/

10-11 01:57
查看更多