[DEFI] Ahah ! Aux armes chevaliers du PHP !
Résolu
Bien le bonjour preux et inconscients chevaliers ! Voici un defi qui fera trembler plus d'un !
Euuuh bon, c'est un truc sur lequel je bloque mais je cojite dessus depuis 45mn, j'en suis a mon 4e cafe depuis, et c'est pas simple =D.
Voici la consigne !
J'ai une variable stocké dans ma base MySQL.
nom de la variable : city
contenu de la variable : ceci'est une'phrase complete
Voici le bout de code qui nous interesse :
Voici donc un code PHP intégré a du JS.
voici ce qui nous interesse plus particulierement, ligne 5 :
Le probleme etant le suivant :
si j'entoure la variable de ' (quotes), ce qui donnerai : value=' " .$data2['city']. " '
>> Et bien il ne m'affichera seulement ceci
Si je n'entoure pas la variable de quotes : value=" .$data2['city']. "
>> Il ne m'affiche seulement ceci'est
C'est normal dans la mesure ou le parametre Value doit etre guidé pour savoir ce qu'il doit prendre en compte. Si j'entoure de quotes, il s'arretera a la prochaine quote, et si je l'entoure pas, il s'arretera au prochain espace.
OBJECTIF : Pouvoir afficher dans la liste deroulante la variable complete ceci'est une'phrase complete !!
Voila, a vous de jouer !
Le premier prix : Un gros bisou virtuel de ma part =p.
Merci beaucoup de votre attention !
--
Le "lol" est aux boulets ce que le ";" est aux programmeurs
b2eda605511811988d04704ed7e809a4
Euuuh bon, c'est un truc sur lequel je bloque mais je cojite dessus depuis 45mn, j'en suis a mon 4e cafe depuis, et c'est pas simple =D.
Voici la consigne !
J'ai une variable stocké dans ma base MySQL.
nom de la variable : city
contenu de la variable : ceci'est une'phrase complete
Voici le bout de code qui nous interesse :
document.getElementById(id).innerHTML = " <?php $recup_data2 = mysql_query("SELECT * FROM membres WHERE name='Fricky'");
$data2 = mysql_fetch_array($recup_data2);
echo "<input type='hidden' name='flag' value='infos'>";
echo "<table>";
echo "<tr><td>Ma ville : </td><td><input type=text name=city value=" .$data2['city']. "></td></tr>";
echo "</table><br>";
echo "<input type='submit' value='Valider'>"
?>";
Voici donc un code PHP intégré a du JS.
voici ce qui nous interesse plus particulierement, ligne 5 :
<input type=text name=city value=" .$temp. ">
Le probleme etant le suivant :
si j'entoure la variable de ' (quotes), ce qui donnerai : value=' " .$data2['city']. " '
>> Et bien il ne m'affichera seulement ceci
Si je n'entoure pas la variable de quotes : value=" .$data2['city']. "
>> Il ne m'affiche seulement ceci'est
C'est normal dans la mesure ou le parametre Value doit etre guidé pour savoir ce qu'il doit prendre en compte. Si j'entoure de quotes, il s'arretera a la prochaine quote, et si je l'entoure pas, il s'arretera au prochain espace.
OBJECTIF : Pouvoir afficher dans la liste deroulante la variable complete ceci'est une'phrase complete !!
Voila, a vous de jouer !
Le premier prix : Un gros bisou virtuel de ma part =p.
Merci beaucoup de votre attention !
--
Le "lol" est aux boulets ce que le ";" est aux programmeurs
b2eda605511811988d04704ed7e809a4
Configuration: Windows XP Firefox 3.0.3
2 réponses
-
Et si tu faisais une fonction qui convertit ta phrase en ceci'est_une'phrase_complete avant de la stocker dans ta base et qu'au moment de l'affichage tu utilisais une fonction inverse ? De la même manière, au lieu de modifier les espaces, tu pourrais modifier les apostrophes... Tu peux peut-être même les changer en entités html...
-
-
J'y ai pensé en effet.
Cependant si un mec ecrit Voici_une phrase_bien_vicieuse.
en passant par les 2 fonctions dont tu parles, j'ai a la fin :
Voici une phrase bien vicieuse. Je ne pourrais jamais avoir d'underscore a la sortie...
En gardant ta technique je pourrais remplacer les espaces par une chaine inspiré d'IKEA(=p) style : @%__SC0RE.
Je doute qu'un mec s'amuse a rentrer cette chaine dans la variable.
Cependant la technique est lourde et assez moche pour quelque chose que j'aimerais utiliser tres souvent.
Je prefererai que la solution soit lié aux quotes et doubles quotes du code cité. M'enfin je garde tout de meme cette idee en dernier recours. -
@pyschopatheOui il s'arrete au premier espace.
De facon general si tu as <input type=submit value=coucou comment ca va>
il t'affiche un bouton avec ecrit coucou dessus. Ne pas entouré les contenus des parametres dans les balises c'est pas le top. -
@Fricky42Bonjour,
Est-tu vraiment sur que sur ta base de données, la chaine y est insérée correctement ?
As tu pensé à l'utilisation de fonctions PHP tel que addslashes ?
https://www.php.net/manual/fr/function.addslashes.php
Voir aussi * stripcslashes() * stripslashes() * addcslashes() * htmlspecialchars() * quotemeta() * get_magic_quotes_gpc()
-
@_willOui, dans la db la variable est bien celle attendu.
L'utilisation de addslashes et stripslashes j'ai testé oui, mais cela revient exactement au meme. De plus selon certaines sources sur le net, c'est moins secure que mysql_real_escape_string() (ce que j'utilise).
-
-
Oulala si je change la variable city en inserant des "(doublequotes) c'est encore pire (bah ui la chaine echo "" est coupée en plein milieu !)
Donc a mon avis, finalement, la solution ne se trouverait pas dans l'utilisation des quotes et doubles quotes dans le code, mais leurs inhibitions dans la variable.
Je test des trucs selon cette idee. Et je vous tient au courant.-
-
@pyschopatheOuarf En effet... C'est con mais fallait y penser, et vu que la valeur est entouré de balise, osef des quotes et dblquotes, espaces et tout le tralala.
C'est cool je te remercie. Tiens, SMAAAACK.
Bonne aprem !
=). -
@Fricky42Chouette, content d'avoir eu cette idée, j'ai droit à un bisou virtuel bien baveux ^^ !
-