2010-10-21 4 views
1

Je suis en train de créer une application Web censée permettre aux utilisateurs de générer du code XML correct pour un utilitaire donné.Récupération de contenu de textarea avec PHP. Obtention de barres obliques inversées

En tant que test simple, j'ai créé une zone de texte contenant le code XML généré. J'ai ensuite créé un bouton (<input type="button">) avec un gestionnaire jQuery qui va envoyer le contenu de la zone de texte à mon application PHP, qui va masser les données et placer les différents éléments dans un. Le code que je utilise l'envoyer les données à PHP est la suivante (en supposant « ceci » est un objet complexe et doImport() est une fonction dans cet objet ... cela fonctionne correctement):

doImport : function() { 
    var $ = this.jQuery, 
    js = this, 
    xml = $('textarea#xmlInput').val(); 

    $.post(this.selfRef, { 
    import : xml 
    }, function (json) { 
    if (json.status) { 
    $('table#tableArea tbody').html(json.tableInfo); 
    } else { 
    alert("Error occurred:\n" + json.message); 
    } 
    }, 'json'); 
}, 

Je peux examiner les données en utilisant Firebug, et je reçois correctement les données XML de la zone de texte. Je m'attends à ce que mon application PHP génère un résultat JSON.

Ensuite, du côté de PHP, lorsque je récupère les informations POST en utilisant $_REQUEST['import'], j'obtenir ce qui suit:

<?xml version=\"1.0\"?> [...] 

En d'autres termes, les guillemets doubles sont en cours préfixés par un antislash.

J'ai essayé d'examiner la chaîne caractère par caractère, et je vois en effet les barres obliques inverses dans la chaîne retournée par $_REQUEST['import'].

Je sais que je néglige probablement quelque chose d'extrêmement simple, mais pour la vie de moi, je ne peux pas comprendre ce que je fais mal.

Cordialement,

lar3ry

+1

S'il vous plaît ajouter un titre de question sensible. La spécification des sujets/langues se fait en définissant les tags. :) –

Répondre

4

Votre installation de PHP a "magic_quotes" sous tension. C'est une fonctionnalité de "sécurité" introduite depuis longtemps. (Vraiment, il provoque juste des problèmes comme celui-ci à mon humble avis).

Je crois que vous devez le désactiver dans le php.ini (généralement trouvé dans/etc si vous utilisez Linux). Changer

magic_quotes_gpc = On 

à

magic_quotes_gpc = Off 

Si cela ne fonctionne pas, vous pouvez utiliser la fonction stripslashes() sur votre entrée.

$_POST['import'] = stripslashes($_POST['import']); 

Espérons que ça aide!

+0

Les citations magiques étaient le coupable. Merci! – lar3ry

Questions connexes