Donnée tronquée

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 : Donnée tronquée

Re: Donnée tronquée

par stealth35 » 18 févr. 2011, 17:53

regarde si t'as les magic_quotes d'activés

Re: Donnée tronquée

par Herve_be » 18 févr. 2011, 14:52

Non mais j'ai compris !
Je n'avais pas vu le warning "A link to the server could not be established "
L'erreur était que j'avais mis le mysql_real_escape_string avant d'ouvrir la DB.
Maintenant je l'ai mis après et ça fonctionne très bien, même si je saisis des ' ou des ".
Grand merci pour ton aide.

Maintenant je veux feinter en saisissant dans la zone input <img src="../gif/ski.gif"> en espérant que c'est ce qui va sortir quand je vais vouloir l'afficher en HTML et que je verrai donc l'image.
Ben c'est raté parce qu'à cause du mysql_real_escape_string ce que je trouve dans la DB est <img src=\"../gif/ski.gif\"> ce que HTML ne comprend pas !

RV

Re: Donnée tronquée

par macgawel » 18 févr. 2011, 13:30

Je ne vois pas la différence.
Moi je fais
mysql_query("xxxx");
toi tu fais
$xxx="xxx";
mysql_query($xxx);
La différence, par exemple, c'est que pour débugger tu peux passer la requête dans le or die(), ce qui peut aider...
Je ne comprends pas pourquoi si j'ajoute
$Comment = mysql_real_escape_string($Comment);
le résultat est le même que si $Comment était vide.
Tu as fais un echo $Comment (dans l'idéal, avant et après le mysql_real_escape_string() ) ?

Re: Donnée tronquée

par Herve_be » 18 févr. 2011, 13:02

c'est pas :
mysql_query("INSERT INTO VTTlog (Date, Name, Choice,Comment) VALUES ('$Date','$Name','$choice1','$Comment')") or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
mais
$sql = "INSERT INTO VTTlog (Date, Name, Choice,Comment) VALUES ('$Date','$Name','$choice1','$Comment')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
Je ne vois pas la différence.
Moi je fais
mysql_query("xxxx");
toi tu fais
$xxx="xxx";
mysql_query($xxx);

et ça fonctionne très bien tant qu'il n'y a pas de ' dans $Comment.

Je ne comprends pas pourquoi si j'ajoute
$Comment = mysql_real_escape_string($Comment);
le résultat est le même que si $Comment était vide.

Re: Donnée tronquée

par stealth35 » 18 févr. 2011, 12:41

c'est pas :
mysql_query("INSERT INTO VTTlog (Date, Name, Choice,Comment) VALUES ('$Date','$Name','$choice1','$Comment')") or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
mais
$sql = "INSERT INTO VTTlog (Date, Name, Choice,Comment) VALUES ('$Date','$Name','$choice1','$Comment')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
et dis nous quelle est l'erreur rendu, d'ailleur normalement tu ne dois pas faire de or die mais faire au debut de ton code
ini_set('mysql.trace_mode', true);

Re: Donnée tronquée

par Herve_be » 18 févr. 2011, 12:34

Bon ça ne fonctionne pas :o
En fait j'ai ceci

<form method="post" action="SendMail.php">
<p align=center><input type='text' size='100' name='Comment'>
<p align=center><input type="submit" value="Confirmer">

Dans la zone input Comment j'ai saisi [Test ' " / \] sans les []
dans SendMail.php

$Comment = $_POST["Comment"];
$Comment = mysql_real_escape_string($Comment); /* Protect from special characters */
mysql_query("INSERT INTO VTTlog (Date, Name, Choice,Comment) VALUES ('$Date','$Name','$choice1','$Comment')") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

Sans mysql_real_escape_string la fonction mysql_query("INSERT ... se termine avec le die
Avec mysql_real_escape_string la fonction mysql_query("INSERT ... s'exécute sans erreur mais il n'y a rien dans la champ $Comment de la DB !

Re: Donnée tronquée

par stealth35 » 18 févr. 2011, 12:05

tu dois le faire pour toutes tes valeurs
même celles dont je suis sûr qu'elles ne contiennent pas de caractères spéciaux ?
Si oui, pourquoi ?
oui, parce que ça coute rien de le faire :wink:
et si c'est des données venant de l'utilisateur il peux toujours insérer ce qu'il veux,

après si t'as mysqli, ou PDO tu peux utiliser les requêtes préparées, t'aura pas trop a te soucier de ca,
si tu veux vraiment reste sur l'extension mysql utilise ca : vos-contributions/faire-des-requetes-pr ... 55960.html

Re: Donnée tronquée

par Herve_be » 18 févr. 2011, 12:00

tu dois le faire pour toutes tes valeurs
même celles dont je suis sûr qu'elles ne contiennent pas de caractères spéciaux ?
Si oui, pourquoi ?

Re: Donnée tronquée

par xTG » 18 févr. 2011, 11:58

Aucune fonction pour décoder, ce n'est pas un encodage mais une protection. ;)

Re: Donnée tronquée

par stealth35 » 18 févr. 2011, 11:58

tu dois le faire pour toutes tes valeurs,
tes données sont insérés normalement.

Re: Donnée tronquée

par Herve_be » 18 févr. 2011, 11:56

Merci pour la réponse.
Comme ça ?

$Comment = mysql_real_escape_string($Comment);
mysql_query("INSERT INTO VTTlog (Date, Name, Choice,Comment) VALUES ('$Date','$Name','$choice1','$Comment')") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

Ca ne posera pas de problème pour afficher $Comment quand je vais le récupérer de la DB ?
Ou dois-je utiliser une autre fonction pour décoder ?

Re: Donnée tronquée

par stealth35 » 18 févr. 2011, 11:36

Maintenant j'ai le même problème ici

mysql_query("INSERT INTO VTTlog (Date, Name, Choice,Comment) VALUES ('$Date','$Name','$choice1','$Comment')") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

S'il y a un ' dans $Comment ça fait des noeuds !
il faut utiliser mysql_real_escape_string sur tes valeurs

Re: Donnée tronquée

par Herve_be » 18 févr. 2011, 10:46

Maintenant j'ai le même problème ici

mysql_query("INSERT INTO VTTlog (Date, Name, Choice,Comment) VALUES ('$Date','$Name','$choice1','$Comment')") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

S'il y a un ' dans $Comment ça fait des noeuds !

Re: Donnée tronquée - Résolu

par Herve_be » 06 févr. 2011, 12:26

Effectivement, ça fonctionne, merci.
Je ne sais jamais quand je dois mettre des ' ou des "

Re: Donnée tronquée

par xTG » 06 févr. 2011, 11:42

Le html recommande des " au lieu des ' justement pour ce genre de cas. :)
echo '<abbr title="'.$Comment.'"><u>'.$Sep.$row['Name'].'</u></abbr>';