gpt4 book ai didi

php - mcrypt_encrypt 在包含 ":"(冒号)的字符串上

转载 作者:行者123 更新时间:2023-11-29 06:49:34 24 4
gpt4 key购买 nike

我的 Web 应用程序从客户端获取 URL 对象,使用 mcrypt_encrypt 对其进行加密,并将结果作为 LONGTEXT 类型存储在 MySQL 数据库中。整个过程如下所示:

    /* $copied below is received from user and can be any string. But I'm just using a URL as example,as that's where it fails */
$copied = "http://www.google.com"
$encCopied = mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$encryption_key,$copied,MCRYPT_MODE_CFB);

$copystuff = "UPDATE LinkTable set copied='$encCopied'";

mysqli_query($db,$copystuff)

执行此代码时,最后一行的 MYSQL 查询失败并出现“语法错误”。经过几个小时的调试,其中涉及手动更改上面 php 中的 $copied 变量,我终于弄明白这是因为 $copied 中的冒号(“:”) 变量。当我将 $copied 更改为 www.google.com 时,没有抛出 SQL 语法错误,一切正常。但是,如果我随后将 $copied 更改为 :www.google.com ,SQL 将再次给出语法错误。

请注意,此代码适用于所有其他类型的字符串,但仅当存在冒号时才会失败。我的假设是 mcrypt_encrypt 将冒号加密成一些 MYSQL 无法处理的不可行的东西。

显示的错误是这样的,当出现冒号时:
您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在第 1 行的 'wcÀeHÿë%†‚;/æ1ÈíëO¤SÌÈúR²#•Wwðg T¥4ª¨\£%@‚y' 附近使用的正确语法/p>

关于为什么会发生这种情况的任何意见?现在,我通过在从 URL 中剥离 http:// 部分后发送 URL 来使应用程序工作。

谢谢。

最佳答案

我确定在某个地方有一个字符正在使 SQL 变得乏味。尝试转义您的加密字符串:

$copystuff = "UPDATE LinkTable set copied='" . mysqli_real_escape_string($encCopied) . "'";

关于php - mcrypt_encrypt 在包含 ":"(冒号)的字符串上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16369170/

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