Perte de certains envois de formulaire à la base de données

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

CrazyCow007
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 182
Inscription: Dim Déc 28, 2003 17:07

Perte de certains envois de formulaire à la base de données

Message le Dim Nov 19, 2006 15:31

Bonjour,

J'ai mis en place un système permettant aux visiteurs de mon site de poster des réactions (sur le film Casino Royale), qui ensuite apparaissent dans ma console d'admin pour être validées ou supprimées.

Le problème que j'ai déjà remarqué est que certains messages lorsqu'ils sont validés n'apparaissent pas dans la base de données. Pourtant le script n'affiche aucune erreur PHP.

J'ai essayé beaucoup de possibilités différentes mais rien n'y fait c'est très étrange (ça ne vient ni de la longueur ni de caractères spéciaux) :?

Je vous met une portion du code qui ajoute les données du formulaire à la BDD (4 informations au total : date, auteur, commentaire et note).

Code: Tout sélectionner
$auteur = htmlspecialchars($auteur, ENT_QUOTES);
$auteur = spec_chars($auteur);
$commentaire = trim($commentaire);
$commentaire = htmlspecialchars($commentaire);
$commentaire = nl2br($commentaire);
$commentaire = spec_chars($commentaire);
$commentaire = str_replace("Â","",$commentaire);
$date = date('j M Y \à G:i');
$date = spec_chars($date);
db_connect();
$sql = "INSERT INTO $dbtable (ok, auteur, commentaire, note, date) VALUES ('0', '$auteur', '$commentaire', '$note', '$date')";
mysql_query ($sql);


Vous remarquerez que j'ai mis beaucoup de sécurités pour formater le texte entré par l'utilisateur. Il est possible que le problème vienne de là.

Annexe :
Code: Tout sélectionner
function spec_chars($chaine) {
  for ($i = 161; $i < 255; $i++)
    $chaine = ereg_replace(chr($i), "&#$i;", $chaine);
  return $chaine;
}


Merci d'avance pour vos idées !


Leonick
WRInaute accro
WRInaute accro
 
Messages: 12383
Inscription: Dim Aoû 08, 2004 20:24

Message le Dim Nov 19, 2006 15:53

et le addslashes() ?

CrazyCow007
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 182
Inscription: Dim Déc 28, 2003 17:07

Message le Dim Nov 19, 2006 15:58

J'ai compris qu'il était inutile lorsque magic_quotes_gpc était sur on, ce qui est le cas sur mon serveur chez OVH. D'ailleurs j'avais essayé de le faire mais ça me rajoute juste des \ supplémentaires. Par défaut addslashes est ajouté à chaque enregistrement dans la base :wink:


Leonick
WRInaute accro
WRInaute accro
 
Messages: 12383
Inscription: Dim Aoû 08, 2004 20:24

Message le Dim Nov 19, 2006 16:14

la solution, c'est d'enregistrer dans un fichier la variable $sql quand mysql_query ($sql); renvoie une erreur.
Et ensuite, de faire le test de cette insertion avec phpmyadmin.
car j'ai eu ce problème chez OVH d'insertion qui ne se faisaient pas et en ajoutant addslashes ça a remarché :D

CrazyCow007
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 182
Inscription: Dim Déc 28, 2003 17:07

Message le Dim Nov 19, 2006 16:50

Ok je vais essayer ça. Merci ! :wink:


rog
WRInaute accro
WRInaute accro
 
Messages: 1662
Inscription: Jeu Sep 21, 2006 2:32

Message le Dim Nov 19, 2006 19:32

pas compris

le probleme vient de l'insertion ou de la validation ?

CrazyCow007
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 182
Inscription: Dim Déc 28, 2003 17:07

Message le Dim Nov 19, 2006 19:42

De l'insertion. Tout le reste (fonction update) marche sans problème.

Je pense qu'il doit y avoir une situation ou l'insertion ne peut pas se faire, mais j'ai pourtant essayé toutes les possibilités avec les " et les ' mais à chaque fois ça marche. C'est assez étrange en fait...

Donc j'ai mis en place un code qui m'envoit par mail s'il y a une erreur SQL toutes les infos de l'erreur et le contenu du formulaire... Faudrait-il encore que ça génère une erreur... :?


RomsIW
WRInaute accro
WRInaute accro
 
Messages: 1062
Inscription: Mar Mai 25, 2004 18:35

Message le Dim Nov 19, 2006 20:59

peux-tu faire un echo $sql histoire de voir ce qui est soumis à la BDD ?, voir un mysql_error ?

CrazyCow007
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 182
Inscription: Dim Déc 28, 2003 17:07

Message le Dim Nov 19, 2006 21:32

$sql :
INSERT INTO reactions (ok, auteur, commentaire, note, date) VALUES ('0', 'PseudoDeTest', 'Hello world !', '8', '19 Nov 2006 à 17:09')

Dans la BDD :
id - int(5) - auto_increment
ok - tinyint(1)
auteur - varchar(40)
date - varchar(40)
commentaire - text
note - int(2)


RomsIW
WRInaute accro
WRInaute accro
 
Messages: 1062
Inscription: Mar Mai 25, 2004 18:35

Message le Dim Nov 19, 2006 21:43

ok là dessus, d'après les infos données, tout va bien, il doit y avoir autre chose. As tu essayé un echo mysql_error(); juste après la requête pour vérifier ?

Après expériences, je ne saurai que trop préférer la syntaxe INSERT INTO table SET champs1='valeur1', champs2='valeur2', etc.

CrazyCow007
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 182
Inscription: Dim Déc 28, 2003 17:07

Message le Dim Nov 19, 2006 22:31

J'ai essayé echo mysql_error(); mais ça ne m'affiche rien et l'ajout dans la base se fait comme il faut. Même avec tous les caractères spéciaux possibles. :roll:

Moi je me rappelle quand j'ai eu ce problème aussi, qu'aucune erreur mysql n'était affichée. Donc je ne pense pas que j'en saurais plus avec le système d'alerte par mail...

CrazyCow007
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 182
Inscription: Dim Déc 28, 2003 17:07

Message le Dim Nov 19, 2006 22:34

Je pense que je vais laisser comme ça. Peut-être que c'était un problème interne chez l'hébergeur... Espérons que ça ne se reproduise plus...


RomsIW
WRInaute accro
WRInaute accro
 
Messages: 1062
Inscription: Mar Mai 25, 2004 18:35

Message le Dim Nov 19, 2006 22:35

vérifie l'auteur, etc.

mais le mieux est de faire un rapport d'erreurs par email pour que tu aies des infos de debug..

bonne continuation

CrazyCow007
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 182
Inscription: Dim Déc 28, 2003 17:07

Message le Lun Nov 20, 2006 20:08

Oui effectivement j'ai rajouté les mêmes vérifications pour l'auteur que pour le commentaire. Et pour le moment j'ai déjà validé une vingtaine de réactions sans avoir reçu de mail d'erreur. Donc ça à l'air de tenir la route maintenant...


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités