[PHP] Récupération bdd > formulaire

Statut
N'est pas ouverte pour d'autres réponses.
Hi! :)

J'ai un ptit problème qui m'embête vraiment bcp! :roll:

J'ai réalisé un script php pour insérer des données ds une base de données (jusque là, tout va bien) et j'ai ensuite réalisé un autre script pour récupérer et modifier les données de la base de données. Tout allait pour le mieux jusqu'au moment où des apostrophes sont apparues dans les chaines de caractères à insérer!
Je récupère, en fait, le contenu des champs de ma table dans un formulaire html. Mais quand il y a des apostrophes dans la chaine de caractères récupérée, ce qui suit cette foutue apostrophe n'apparait pas! :pfiou:

ex:
- ds la bdd: l'apostrophe
- ds mon formulaire voilà ce qui est récupéré: l\

J'ai bien essayé d'utiliser les fontions du style addslashes, etc mais sans succès!

Plz need help! :cry:
 

null

ose();
Utilise la function preg_quote et après tu utilises la la fonction stripslashes pour afficher les résultats sur une page.

Ce que tu peux aussi faire, c'est une fonction du genre :

Code:
function HtmlCode($str)
{
   $str = str_replace("é", "é", $str);
   $str = str_replace("è", "è", $str);
   $str = str_replace("è", "è", $str);
   $str = str_replace("â", "â", $str);
   $str = str_replace("&agrave", "â", $str);
   $str = str_replace("’", "’", $str);
   $str = str_replace("'", "’", $str);
   $str = str_replace("\"", """, $str);
   $str = str_replace("ô", "ô", $str);
   
   return $str;
} //fin HtmlCode()
qui est mieux car elle rend compatible avec l'HTML 4.01 :wink:
 

MbK_

Etudjant
il faut bien echapper les apostrophes.

avec la fonction addslashes

pour afficher apres, il faut utiliser la fonction stripslashes(). ceci supprime les \ de la chaine
 
J

j0k3r_n0ir

ex membre
Il faut aussi selon la configuration de ton serveur, penser au magic_quotes.

Quoitesse ?
Tout simplement une fonction magique tu serveur qui rajoute \ devant toutes les apostrophes pour eviter des attaques via SQL injection par exemple.

Il suffit pour cela au moment ou tu récupères ta variable du formulaire (on dira contenu pour l'exemple) de tester si cette fonction est active, sinon tu les mets toi même les \ :

Code:
$_POST['contenu'] = (!get_magic_quotes_gpc()) ? addslashes($_POST['contenu']) : $_POST['contenu'];
Ensuite pour l'afficher, tu fais comme on te dit : un bon stripslashes et zou :)
 
1er
OP
BrainCracker
hun hun ... j'ai testé un peu tout ça et il en resort que l'affichage sur page fonctionne correctement (mon texte est "propre" quoi) mais l'affichage ds le formulaire reste tjs inchangé! :?
 
M

makiavili

ex membre
faut mettre la fonction stripslashes() a ta variable.

exemple

$champs = stripslashes($champs);

<input type="text" name="champs" value="$champs">
 

null

ose();
makiavili a dit:
faut mettre la fonction stripslashes() a ta variable.

exemple

$champs = stripslashes($champs);

<input type="text" name="champs" value="$champs">
Ca peut poser problème, car le résultat peut être :

Code:
<input type="text" name="champs" value="salut, je trouve la page [b]"[/b] news [b]"[/b] super !">
Le problème ? Value= va s'arrêter à page "

Utilise ma fonction HtmlCode()
 

MbK_

Etudjant
null a dit:
makiavili a dit:
faut mettre la fonction stripslashes() a ta variable.

exemple

$champs = stripslashes($champs);

<input type="text" name="champs" value="$champs">
Ca peut poser problème, car le résultat peut être :

Code:
<input type="text" name="champs" value="salut, je trouve la page [b]"[/b] news [b]"[/b] super !">
Le problème ? Value= va s'arrêter à page "

Utilise ma fonction HtmlCode()
En effet, cette fonction a l'air assez simple dans son ensemble. Je vais d'ailleur la garder en memoire :D

Merci ;)
 
J

j0k3r_n0ir

ex membre
Euh ta fonction HtmlCode donnera le même résultat sur ton exemple null ... vu que tu ne traire pas les doubles quotes dans ta fonction ...

Bon ok faut juste rajouter :
Code:
$str = str_replace('"', """, $str);
:wink:
 

null

ose();
Si j0k3r, ma fonction vérifier " et ' donc deux fois ', vu que c'est traité par caractère, il y aura deux fois le caractère HTML
 
J

j0k3r_n0ir

ex membre
Euh null ...
" -> Un caractère
'' -> Deux caractères

Ne confond pas les doublequotes, qui ne font qu'un seul caractere et les doubles simplequotes qui font deux caractères.
 

null

ose();
Alors je vois pas pourquoi ça bugerait :oops:
 

Ezekiel !

Elite
je profite de l'occasion pour demander votre avis sur ma fonction pour traiter le formulaire.
Son objectif est de convertit tout les caractere au format html ainsi que de sécuriser le contenu (eviter les requete sql malveillante...)
Je l'appelle des que je fais un insert dans la bdd:
Code:
			// -------[ Traite les données d'un formulaire ] -----------

	function traite(){

	foreach($_POST as $key => $value)

	$_POST[$key] = nl2br(htmlentities($_POST[$key], ENT_QUOTES));
	
	}
 

null

ose();
Ca à l'air bien :p (HtmlEntities() là, c'est comme ma fonction en fait)
 

Ezekiel !

Elite
null a dit:
Ca à l'air bien :p (HtmlEntities() là, c'est comme ma fonction en fait)
oui mais en plus simple et tu ne dois pas te faire *** a traiter tout les champs du form un par un par un...
une bête traite(); permet de securisé le contenu d'un formulaire à 30 champs ^^
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut