0

我有一个带有正斜杠的普通 URL 的 URL 字段的 MySql 数据库。当我使用 PHP Web 服务获取 URL 数据时,它会为每个正斜杠显示一个反斜杠:

http://example.com/iphone/images/test.png

显示为

http:\/\/example.com\/iphone\/images\/test.png

可能是什么问题呢?


这是获取我的数据的函数。

function getdata() {

    // Check for required parameters
    if (isset($_POST["genre"])) {

        // Put parameters into local variables
        $genre = $_POST["genre"];

        // Final result array
        $final_result = array();

        // Look up in database
        $user_id = 0;
        $stmt = $this->db->prepare('SELECT ID, BAND, VENUE, GENRE, DATE, THUMBNAIL_URL, DESCRIPTION FROM shows WHERE GENRE=?');
        $stmt->bind_param("s", $genre);
        $stmt->execute();
        $stmt->bind_result($id, $band_result, $venue_result, $genre, $date, $thumbnail_url, $description);
        while ($stmt->fetch()) {


            $thumbnail_url = stripslashes($thumbnail_url);

            $result = array(
            "id" => $id, "band" => $band_result, "venue" => $venue_result, "genre" => $genre, "date" => $date, "thumbnail_url" => $thumbnail_url, "description" => $description,
            );
            $final_result[] = $result;
            continue;
        }
        $stmt->close();





        sendResponse(200, json_encode($final_result));
        return true;
    }
    sendResponse(400, 'Invalid request');
    return false;
}
4

2 回答 2

1

发生这种情况的原因是您的主机很可能启用了magic_quotes,并且它可以从主机更改为主机。(通过转义用户提交的输入来加强安全性的徒劳尝试)

所以最好检查它是否启用。(特别是如果您的脚本达到其他配置)

然后,如果是这样,在插入数据库之前处理那些不需要的额外斜线的剥离,仍然总是使用mysql_real_escape_sting()PDO 准备好的语句转义到数据库中,否则将出现错误或mysql 注入

if(get_magic_quotes_gpc()) {
  $genre = stripslashes($_POST["genre"]);
}
于 2011-09-09T00:56:24.237 回答
-1

如果它以斜杠出现在数据库中;没关系。

如果您想在将它们从数据库中删除后从 PHP 中删除它们,请通过 stripslashes(); 运行它。

$url = stripslashes($url);

如果你想在斜杠进入数据库之前去掉斜杠......与上面相同,但在你这样做之前要三思而后行:)

于 2011-09-09T00:34:03.187 回答