URL, сохраненный в MySQL, возвращается с дополнительной обратной косой чертой для каждой прямой косой черты (a / b.png => a \ /b.png) - PullRequest
0 голосов
/ 09 сентября 2011

У меня есть база данных MySql с полем URL, в котором есть обычные URL с косой чертой.Когда я получаю данные URL с помощью веб-службы PHP, они отображаются с обратной косой чертой для каждого прямого слеша:

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;
}

Ответы [ 2 ]

1 голос
/ 09 сентября 2011

Причина, по которой это может произойти, заключается в том, что ваш хост, скорее всего, имеет magic_quotes , и он может меняться от хоста к хосту. (тщетная попытка усилить безопасность, избегая вводимых пользователем данных) .

Так что всегда лучше проверить, включен ли он. (особенно если ваш скрипт достигает других конфигураций)

Тогда, если это так, обработайте удаление лишних косых черт перед вставкой в ​​базу данных, все равно всегда используйте mysql_real_escape_sting () или подготовленные PDO операторы для выхода в базу данных, в противном случае возникнут ошибки или MySQL инъекции .

if(get_magic_quotes_gpc()) {
  $genre = stripslashes($_POST["genre"]);
}
0 голосов
/ 09 сентября 2011

Если он появляется в базе данных с косой чертой;это нормально.

Если вы хотите удалить их в своем PHP после того, как вытащили их из базы данных, запустите его через stripslashes ();

$url = stripslashes($url);

Если вы хотите удалить косые черты передон попадает в базу данных ... так же, как и выше, но подумайте дважды, прежде чем делать:)

...