首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP urldecode问题

PHP urldecode问题
EN

Stack Overflow用户
提问于 2011-04-19 04:05:24
回答 2查看 383关注 0票数 0

我通过jquery将下面的javascript urldecode值发送到一个endcodeURI脚本,在那里我使用urldecode并将该值存储在数据库中,但没有存储'>‘符号。

代码语言:javascript
复制
testid=174742228&VI-42=zdddfsdsdf%3Edsdfsdfs%3Efsdfsdfs&

+------+-----------+-----+-----+------------------------------+------+
| id   | testid    | sec | qid | ans                          | img  |
+------+-----------+-----+-----+------------------------------+------+
| 6510 | 174742228 | VI  |  42 | zdddfsdsdf dsdfsdfs fsdfsdfs | NULL |
+------+-----------+-----+-----+------------------------------+------+

foreach ($_POST as $k => $v) {
    $flds = explode("-", $k);
    if (count($flds) == 3) {
        $datai = array($flds[0], $flds[1], $flds[2], $testid, urldecode(mysql_escape_string($v)));
        $resi = $dbh->prepare("INSERT INTO result (sec, img, qid, testid, ans) VALUES (?, ?, ?, ?, ?)");
        $resi->execute($datai);
    } else {
        $data = array($flds[0], $flds[1], $testid, urldecode(mysql_escape_string($v)));
        $res = $dbh->prepare("INSERT INTO result (sec, qid, testid, ans) VALUES (?, ?, ?, ?)");
        $res->execute($data);
    }   
}

提前感谢

EN

回答 2

Stack Overflow用户

发布于 2011-04-19 04:26:44

我不知道这些是否能解决您的问题,但是您的代码中有一些问题:

  1. mysql_escape_string已被弃用,您应该在mysql_real_escape_string.
  2. You转义之前使用mysql_real_escape_string(urldecode($str));).
  3. You解码(例如:甚至不必转义任何。您使用的是预准备语句(很可能是语法中的PDO )。PDO将自动使用占位符转义值。
  4. 您可能正在进行双重解码。如果您发布的查询字符串作为请求正文直接发送到PHP,则会自动解码。因此,您可能正在对已解码的URL进行register_globals.解码。
  5. 您直接引用$testid (而不是$_POST['test_id'])的事实使我认为您可能正在使用URL可能不是这样,但只是为了确认一下。

除此之外,代码看起来还不错,不应该让>符号消失。检查您的MySQL列类型和/或尝试var_dumping $_POST并检查其中的内容。

票数 2
EN

Stack Overflow用户

发布于 2011-04-19 04:19:02

尝试颠倒urldecode(mysql_escape_string($v))的顺序。在将数据转换为实际进入数据库的数据之前,您可以对数据进行转义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5708246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档