Url armazenado no MySQL retorna com barra invertida adicional para cada barra de barra direta (a / b.png => a \ /b.png)

Eu tenho um database MySql com um campo de URL que possui URLs normais com barras oblíquas. Quando recebo os dados da URL com o serviço da Web PHP, aparece com uma barra invertida para cada barra inclinada:

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

mostra como

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

Qual poderia ser o problema?


Aqui está a function que obtém meus dados.

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

A razão pela qual isso pode acontecer é que o seu host provavelmente possui habilitações de magic_quotes e pode mudar de host para host. (uma tentativa inútil de fortalecer a segurança ao escaping dos dados enviados pelos usuários) .

Portanto, é sempre melhor verificar se está habilitado. (especialmente se seu script atingir outras configurações)

Então, se assim for lidar com a remoção de suas barras extra indesejadas antes de inserir no database, ainda use as instruções preparadas do mysql_real_escape_sting () ou do PDO para escaping para o database, caso contrário serão enviadas injeções mysql .

 if(get_magic_quotes_gpc()) { $genre = stripslashes($_POST["genre"]); } 

Se aparecer no database com barras; isso é bom.

Se você quiser removê-los em seu PHP depois de obtê-los fora do database, execute-o através de stripslashes ();

 $url = stripslashes($url); 

Se você deseja tirar as barras antes de entrar no database … mesmo do acima, mas pense duas vezes antes de fazer 🙂

    Intereting Posts