Problème avec les apostrophes !!!

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 : Problème avec les apostrophes !!!

Re: Problème avec les apostrophes !!!

par Ryle » 18 févr. 2011, 00:14

Je compléterais juste en disant que le nom de la fonction est suffisamment explicite pour savoir quand et comment les utiliser :
- mysql_real_escape_string() va protéger les chaines pour qu'elles puissent être intégrées dans une base de données mysql (mais ça conviendra pas pour une bdd oracle).

- addslashes() va juste ajouter des antislash dans la chaine, mais n'implique pas de base de données... un exemple bête, générer du javascript :
document.write('<?php echo addslashes($mavar); ?>');

Re: Problème avec les apostrophes !!!

par Megadeth » 17 févr. 2011, 15:51

Re,
C'était utile avant PHP 4.3.0
Maintenant pourquoi utiliser plusieurs fonctions alors que tout se fait avec une autre ? ;)
Je ne maitrise pas mysql à 100% et j'ai toujours pensé que la méthode que j'utilisais, celle inculquée, était la bonne.
Visiblement, non et heureusement que ce type de forum permet de rectifier le tir même près plusieurs années de mauvaises pratiques encore fallait-il le savoir et connaître ces fonctions mysql bien utiles. Je suis en plein désarroi spiritique 8-|

@moogli : Merci pour ton explication on ne peut plus claire et précise. Je lève mon épée de Damoclès, si si :)

Putain, encore une journée où je vais me coucher moins con qu'au réveil, disons cultivé :lol:

Mega
;)

Re: Problème avec les apostrophes !!!

par moogli » 17 févr. 2011, 13:59

c'est aussi utile pour certaine chose qui n'ont pas forcément un équivalent à mysql_real_escape_string, et surtout parce que la configuration du serveur n'est pas toujours (rarement / jamais) avec magic_quote_* à off et dans ce cas faut bien virer les \ qui arrive par magie :roll: la le stripslashes sera utile avant le mysql_real_escape_string qui de toute façon sera "obligatoire" car addslashes n'échappe pas les meme caractère que mysql_real_escape_string d'où sont intéret :)

je pense par exemple à l'écriture dans un fichier texte tous bête. si magic_quote_gpc est à on la sortie du formulaire va contenir des \ que l'on va insérer dans le fichier, déja c'est moyen. Mais ensuite si magic_quote_runtime est activé alors la même chose va arrivée et la c'est le drame :D
si en plus tu ajoute des modif quelconque tu va avoir une ribanbelle de \\\\ à l'affichage, dans ce cas stripslashes est utile, même si cela ne va pas tous virer et que parfois un str_replace (ou plutot preg_replace et une regexp bien foutue) va être obligatoire pour aplier le problème de base ;)

donc ces fonctions sont évidement utile mais pas toujours dans le contexte où elles sont utilisé car d'autre fonction font le taff est mieux ;)

en général stripslahes est utilisé pour palier le problème des magic_quote_* à on (un array_walk brutal sur $_GET /$_POST par exemple) ;)

PS : y a de bon exemple de ces cas dans la donc de get_magic_quote_gpc :)

@+

Re: Problème avec les apostrophes !!!

par xTG » 17 févr. 2011, 13:21

C'était utile avant PHP 4.3.0
Maintenant pourquoi utiliser plusieurs fonctions alors que tout se fait avec une autre ? ;)

Re: Problème avec les apostrophes !!!

par Megadeth » 17 févr. 2011, 13:15

Re,

Mowgli, j'vais te renvoyer dans ta jungle moi :lol:

Plus sérieusement, pour le add et le strip du coup, l'utilité si c'était pas pour ça ?

Bonne journée à tous mes fans !

Mega
;)

Re: Problème avec les apostrophes !!!

par moogli » 17 févr. 2011, 02:10

http://fr.php.net/manual/fr/function.my ... string.php (ben oui la doc)

Effectivement c'est récent (PHP 4 >= 4.3.0, PHP 5) ;)

@+

Re: Problème avec les apostrophes !!!

par Megadeth » 17 févr. 2011, 01:51

Concernant ton problème, tu dois utiliser des addslashes dans l'insert et des stripslashes en sortie.
Là je dis non!
C'est du bidouillage et ça ne sert à rien!
On utilise les fonctions d'échappements dédiées, comme mysql_real_escape_string() pour mysql!
Et on fait rien en sortie! (sauf un htmlspecialchars éventuel)
pffff j'ai même le droit de me faire engueuler, c'est trop injuste :cry:

Plus sérieusement, les addslashes et les strip ont bien dû avoir leur utilité si les fonctions existent...Si ce n'est pas pour ça et que c'est du bidouillage, c'est pour quoi ? J'ai toujours pensé que c'était pour palier à ce problème d'accent il y a un certain temps certes mais il fut un temps...

mysql_real_escape_string() , c'est récent ?

Mega dit "la bidouille" qui ne vous en veux pas mais attention quand même :twisted:
;)

Re: Problème avec les apostrophes !!!

par mdpubs » 16 févr. 2011, 20:41

ça y est j'ai trouvé !!!!!!!! C'était bien cette histoire de quote.....

Par rapport à mon premier code, j'ai ajouté un antislash dans la ligne précise qui correspond aux infos d'une donnée du carousel (un peu comme dans une ligne XML...).

Donc voici l'ancien code :
echo "<div style='text-align:justify'><img src='$resultat[0]' alt='$resultat[1]' title='<fieldset><span class=cadre>Ajoutee le :</span> <span class=roseann4>$resultat[2]</span> | <span class=cadre>Titre de la Video :</span><span class=roseann4> $resultat[1]</span> | <span class=cadre>Categorie de la Video :</span><span class=roseann4> $resultat[3]</span></fieldset>
<center><a class=parten10 href=http://www.abracada.com/conscience/$res ... tat[4].php target=_self><b>Voir la vid&eacute;o</b></a></center>' /></div>";
Et le nouveau avec l'antislash positionné au bon endroit et précisément :
echo "<div style='text-align:justify'><img src='$resultat[0]' alt='$resultat[1]' title=\"<fieldset><span class=cadre>Ajoutee le :</span> <span class=roseann4>$resultat[2]</span> | <span class=cadre>Titre de la Video :</span><span class=roseann4> $resultat[1]</span> | <span class=cadre>Categorie de la Video :</span><span class=roseann4> $resultat[3]</span></fieldset><br /><center><a class=parten10 href=http://www.abracada.com/conscience/$res ... tat[4].php target=_self><b>Voir la vid&eacute;o</b></a></center>\" /></div>";
Alors merci beaucoup à tous, car ce sont vos directions qui m'ont permis de trouver... :) Plus de problème avec les apostrophes maintenant... :)


A+
William

Re: Problème avec les apostrophes !!!

par stealth35 » 16 févr. 2011, 20:17

tes quote de tag HTML sont aussi des ', faut bien séparer ton code sinon tu va pas t'en sortir

c'est pas :
<?php
    $test = 'blabla';
    echo '<p>' . $test . '</p>';
?>
c'est :
<?php
    $test = 'blabla';
?>
<p><?php echo $test; ?></p>

Re: Problème avec les apostrophes !!!

par mdpubs » 16 févr. 2011, 20:13

excuse jojolapine, en fait c'est pas intégré entre <javascript> et </javascript>... mais comme c'est un carousel, c'est un fichier externe en javascript qui gère le carousel. L'intégration de en PHP se fait lui dans un fichier en php... Ce que je voulais dire, c'est que cette histoire d'apostrophe pose peut-être problème par l'intervention d'un javascript...

Sinon voici une des réponse de la base de données. On constate que : "L'instant présent" apparait bien dans la source, alors qu sur la page, elle n'apparait pas ??? :

<div style='text-align:justify'><img src='http://www.abracada.com/conscience/YJTu ... resent.jpg' alt='Vivre l'instant présent' title='<fieldset><span class=cadre>Ajoutee le :</span> <span class=roseann4>2011-01-05</span> | <span class=cadre>Titre de la Video :</span><span class=roseann4> Vivre l'instant présent</span> | <span class=cadre>Categorie de la Video :</span><span class=roseann4> Videos-Conscience</span></fieldset><br /><center><a class=parten10 href=http://www.abracada.com/conscience/Vide ... resent.php target=_self><b>Voir la vid&eacute;o</b></a></center>' /></div>

Re: Problème avec les apostrophes !!!

par stealth35 » 16 févr. 2011, 19:24

En fait dans la source, ça apparaît bien, mais en rouge et sur la page html, ça n'apparait pas.

Exemple pour "n'apparait pas" = dans la source "n'apparait pas" et sur la page "n'"

Donc il me faut une fonction pour que les infos après les l' c' qu', etc... apparaissent et les ' ne bloquent pas...
copie ta source pour voir

Re: Problème avec les apostrophes !!!

par jojolapine » 16 févr. 2011, 19:15

Si tu utilises tes données dans du js (et que tu utilises l'encodage utf8 -ça peut-être une bonne occasion d'y passer ;) - )...
Utilise json_encode() pour faire passer tes données
Exemple:
<?php

$tab = array("j'y vais!","j'aime les chats");

$val = 'bla bla " bla bla \' bla bla ';

?>
<script type="text/javascript">

var monObj = <?php echo json_encode($tab);?> ;

var maChaine = <?php echo json_encode($val);?> ;

</script>

Re: Problème avec les apostrophes !!!

par mdpubs » 16 févr. 2011, 19:09

En fait dans la source, ça apparaît bien, mais en rouge et sur la page html, ça n'apparait pas.

Exemple pour "n'apparait pas" = dans la source "n'apparait pas" et sur la page "n'"

Donc il me faut une fonction pour que les infos après les l' c' qu', etc... apparaissent et les ' ne bloquent pas...

Re: Problème avec les apostrophes !!!

par stealth35 » 16 févr. 2011, 18:51

Mes données dans la bases fonctionnent très bien sur d'autres pages php. Les apostrophes sont respectés.

Donc, c'est juste sur cette page (ce code), que j'ai le problème.

En fait ce code est incrusté dans un mootools (carousel), donc il y a du javascript. Est-ce que c'est cela qui pose problème ? Peut-être, voir même sûrement d'ailleurs en y pensant, mais comment faire ????

....
affiche la en lien direct et regarde si la source HTML correspond a ce que tu veux

Re: Problème avec les apostrophes !!!

par mdpubs » 16 févr. 2011, 18:47

Mes données dans la bases fonctionnent très bien sur d'autres pages php. Les apostrophes sont respectés.

Donc, c'est juste sur cette page (ce code), que j'ai le problème.

En fait ce code est incrusté dans un mootools (carousel), donc il y a du javascript. Est-ce que c'est cela qui pose problème ? Peut-être, voir même sûrement d'ailleurs en y pensant, mais comment faire ????

....