Aide pour recherche, traitement, remplacement de chaine XML

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Aide pour recherche, traitement, remplacement de chaine XML

Re: Aide pour recherche, traitement, remplacement de chaine XML

par Bo$$ Bravo » 25 août 2011, 08:18

Ouais, Ok, mais après, je les enlève ces anti_slash comme ceci :

Code : Tout sélectionner

$original_code = $_POST['code']; $original_code_1 = htmlentities($original_code); $original_code_2 = str_replace("\\", "", $original_code_1); $string = <<<xml <root> $original_code_2 </root> xml; $xml = simplexml_load_string($string);
Et là, il me les enlève bien, mais la suite ne marche plus, le code resort identique a comme il est rentré

Re: Aide pour recherche, traitement, remplacement de chaine XML

par moogli » 25 août 2011, 00:28

comme je te l'ai dit magic_quote
la magie noire des apostrophes magiques

bonne lecture !

Re: Aide pour recherche, traitement, remplacement de chaine XML

par Bo$$ Bravo » 24 août 2011, 21:17

Si je met test ' et " il en sort test \' et \" en direct du POST

Re: Aide pour recherche, traitement, remplacement de chaine XML

par devlop78 » 24 août 2011, 20:30

Fais un simple test d'un input dans lequel tu mets une phrase avec un ' et un " par exemple mais pas de < ni >. Et fais l'affichage juste après sans aucun traitement. Ca sent clairement l'échappement

Re: Aide pour recherche, traitement, remplacement de chaine XML

par Bo$$ Bravo » 24 août 2011, 17:31

Pas de problème de ce coté là........

Re: Aide pour recherche, traitement, remplacement de chaine XML

par moogli » 24 août 2011, 16:43

bof un magic quote foireux ? ou un addslashes qui traine comme tu veux :)

vérifie la valeur des paramètres magic_quote_gpc et magic_quote_runtime, il est préférable qu'ils soient à off s'il ne sont pas c'est surement la ton soucis :)

si tu n'a rien d'afficher sans le html entites c'est parce que c'est pris pour du html donc pas affiché ;)

@+

Re: Aide pour recherche, traitement, remplacement de chaine XML

par Bo$$ Bravo » 24 août 2011, 16:21

SI je fais un écho $original_code, il ne m'affiche rien, mais si je fais un écho htmlentities($original_code) il m'affiche le code normal avec les \" au lieu des "

Mais Pourquoi :?:

Re: Aide pour recherche, traitement, remplacement de chaine XML

par moogli » 24 août 2011, 14:28

et t'a afficher $code pour voir ce qu'il y a dedans ? (var_dump($code)) au pire un echo htmlentities($code)

@+

Re: Aide pour recherche, traitement, remplacement de chaine XML

par Bo$$ Bravo » 24 août 2011, 08:24

J'ai modifié le code comme ceci :

Code : Tout sélectionner

$string = <<<xml <root> <quad style="Bgs1InRace" substyle="BgList" posn="-61.500 -8.000 4.000" sizen="60.000 63.000" align="center" valign="center"/> <entry posn="-3.25 -12.5 2" sizen="50 3" halign="center" valign="center" name="post_box_tm2_object" default=""/> <quad style="Bgs1InRace" substyle="BgList" posn="1.500 -8.000 4.000" sizen="60.000 63.000" align="center" valign="center"/> <quad style="Bgs1InRace" substyle="BgList" posn="1.500 -8.000 4.000" sizen="60.000 63.000" align="center" valign="center"/> </root> xml; $xml = simplexml_load_string($string); foreach($xml->quad as $it ) { if (isset($it)) { $quadAtt = $it->attributes(); $l = explode(' ',$quadAtt->sizen); if (isset($l[0])) $l[0] = $l[0]*320/128; if (isset($l[1])) $l[1] = $l[1]*180/96; $quadAtt-> sizen = implode(' ',$l); $quadAtt = $it->attributes(); $l = explode(' ',$quadAtt->posn); if (isset($l[0])) $l[0] = $l[0]*320/128; if (isset($l[1])) $l[1] = $l[1]*180/96; $quadAtt-> posn = implode(' ',$l);} ;}
Avec un foreach pour chaque attribut et cela fonctionne.


Par contre, pour l'entrée, si je met cela :

Code : Tout sélectionner

$original_code = $_POST['code']; $string = <<<xml <root> $original_code </root> xml;
ça ne fonctionne pas, ça affiche des erreurs Warning: simplexml_load_string() alors que si je rentre manuellement dans le script ce que j'ai rentré dans le POST, cela fonctionne.

Re: Aide pour recherche, traitement, remplacement de chaine XML

par moogli » 23 août 2011, 23:41

foreach xml ?

je testerais demain ^^

@+

Re: Aide pour recherche, traitement, remplacement de chaine XML

par Bo$$ Bravo » 23 août 2011, 23:12

dans ce cas vire les items (trop lourd a gérer) et tu boucle sur les tag du root :)

@+
C'est ce que j'ai fini par faire ce soir ouais, c'était plus simple que de diviser le POST par ligne ^^

Mais si je remplace foreach($xml->item as $it ) par foreach($xml->root as $it ) a ce moment là, si il y a 2 quads par exemple, il va en traiter qu'un non ?

EDIT: Oui, en effet, c'est ce qu'il se passe.

Re: Aide pour recherche, traitement, remplacement de chaine XML

par moogli » 23 août 2011, 22:12

dans ce cas vire les items (trop lourd a gérer) et tu boucle sur les tag du root :)

@+

Re: Aide pour recherche, traitement, remplacement de chaine XML

par Bo$$ Bravo » 23 août 2011, 09:01

En fait non, justement, c'est bien ce qu'il me semblait, le POST peut être aléatoire, il peut contenir des entrée quad, label, entry, audio (j'ai rajouté entry et audio ensuite, avec des conditions existantes) et il peut très bien avoir 2 quad puis un audio, puis 3 labels, etc.... ce n'est pas organisé.
Exemple de récupération d'un $_POST très rempli :
<quad style="Icons128x128_1" substyle="Coppers" posn="-60.000 -4.000 5.000" sizen="3.500 3.500" align="center" valign="center"/>
<quad style="Icons128x128_1" substyle="Download" posn="-32.000 3.500 5.000" sizen="5.000 5.000" align="center" valign="center"/>
<audio data="3" posn="-59.500 13.500 6.000" sizen="6.000 6.000" looping="0" align="center" valign="center"/>
<quad image="Images/pouce_vert.png" posn="-31.000 -1.500 5.000" sizen="3.500 3.500" align="center" valign="center" manialink="test?page=tm2&sous_page=horns&vote_tm2_horn=like&horn_id=2"/>
<entry posn="-3.25 -12.5 2" sizen="50 3" halign="center" valign="center" name="post_box_tm2_object" default=""/>
<label text="\$i\$fc0id : 496" posn="-2 20.5 5" autonewline="1" scale="1" halign="right" valign="center"/>
<label text="\$i\$fc0id : 496" posn="-2 20.5 5" autonewline="1" scale="1" halign="right" valign="center"/>
<quad style="Icons128x128_1" substyle="Download" posn="-32.000 3.500 5.000" sizen="5.000 5.000" align="center" valign="center"/>
Donc cela ne se répète pas du tout, ça peut être complètement aléatoire, la seule chose que l'on sait c'est que les 4 fonctions qui peuvent exister sont quad, label, entry, audio. Il peut y avoir du php aussi, mais je l'enlève avant d'envoyer dans le XML.

Re: Aide pour recherche, traitement, remplacement de chaine XML

par moogli » 23 août 2011, 08:53

pour la concaténation je te renvoie sur la doc de la syntaxe heredoc ;)

qu'y a t'il dans ton $_POST au final ?

la je pense que ton xml est mal construit, car un item est une "entitée" répétable (par exemple on pourrais mettre dans un item un nom / prenom pour un annuaire)

si tu pouvais me dire exactement comment c'est je pourrais p'tet plus t'aider (voir décrire la chose ;) ).

si j'ai mis cet item au départ c'est parce que je pensais que les deux infos que tu a fournis dans ton 1er message se répétée ;)


@+

Re: Aide pour recherche, traitement, remplacement de chaine XML

par Bo$$ Bravo » 23 août 2011, 08:43

Il reste un problème qui me persiste, la concaténation du POST dans le XML, je m'explique :
Je doit séparer les champs rentrés dans le POST par ligne, et ensuite insérer une ligne entre chaque <item></item> pour que cela fonctionne bien.
Mais comment rajouter par exemple mon POST dans ce code ?

Code : Tout sélectionner

$string = <<<xml <root> <item> <entry posn="-3.25 -12.5 2" sizen="50 3" halign="center" valign="center" name="post_box_tm2_object" default=""/> </item> <item> <quad style="Bgs1InRace" substyle="BgList" posn="1.500 -8.000 4.000" sizen="60.000 63.000" align="center" valign="center"/> </item> </root> xml;
Cdt.
Bo$$ Bravo