base64_encode撇号

时间:2011-02-28 18:15:40

标签: php mysql base64

每次我base64_encode();我的数据库中的新数据,它包含撇号('),当我base64_decode它时,我的文本就像这样:

原文:嗨! 哪里每个人?

加密后:嗨! 哪里每个人?

如何使用PHP停止此操作?

4 个答案:

答案 0 :(得分:1)

我认为这与magic_quotes正在进行。

我是否正确地假设您base64_encode数据来自表单并将其保存到数据库中?

如果是这样,请定义并使用此功能处理来自$_GET$_POST$_COOKIE的任何内容:

function escape_gpc($var) {
    return get_magic_quotes_gpc() ? stripslashes($var) : $var;
}

if (isset($_POST['form_sent'])) {
    $somedata = escape_gpc($_POST['somedata']);
    // and then you base64_encode it and insert into the database.
}

答案 1 :(得分:1)

摆脱base64编码,你会没事的 插入前不要编码。
检索时不要解码。

就是这样。

看,你的情况很清楚。

  • 首先,您通过在多个字符中添加反斜杠来转义数据 对于包含在引号中的查询中的字符串来说,这已经足够了。不需要更多编码!
    这些反斜杠应该关闭然后插入数据,因此,您可以在数据库中保持数据不变。

  • 接下来,您正在对字符串进行编码,密封斜杠!
    然后,在解码后,您的数据中会出现反斜杠。

所以,你只需摆脱base64,一切都会好起来的!

答案 2 :(得分:0)

您可以在解码输出上使用stripslashes(),但要确保在插入数据库之前将其正确转义。你用PHP编码和解码吗?

答案 3 :(得分:0)

如果你没有使用一些转义函数(我想是mysql_real_escape_string,但是仅仅是统计数据,你没有提到你是否使用了DB而不是其他语句或准备好的语句),你可能有magic_quotes_gpc指令在php.ini中,所以在将数据插入数据库之前会自动添加转义反斜杠。 因此,在检索记录时,您将获得反斜杠。编码/解码正是它应该是的:编码和解码字符串。

使用$decoded = stripslashes(base_64decode($your_datas_from_db));