Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL Webou Webou Pro
Recherche avancée  
*
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
24 Avril 2019, 04:24:04


Connexion avec identifiant, mot de passe et durée de la session


Pages: [1]   Bas de page
  Imprimer  
Auteur Fil de discussion: Enregistrement aléatoire dans la table  (Lu 1446 fois)
0 Membres et 1 Invité sur ce fil de discussion.
Keanjyto
Bavard
***
Hors ligne Hors ligne

Messages: 170


Voir le profil WWW
« le: 11 Janvier 2009, 13:00:13 »

Salut,

j'ai fait un livre d'or mais les messages ne s'enregistrent pas à tous les coup (aussi bien sur webou.net que sur WampServer)... Est-ce que quelqu'un a déjà eu ce problème d'enregistrement aléatoire des messages ?

Si vous pouviez me dire si vous arrivez à enregistrer des messages aussi en essayant à cette adresse (j'effacerai les messages de test après) :
- http://mescahiers.webou.net/livre/

Apparemment, pour les messages courts ou avec des chiffres uniquement il n'y a aucun problème, mais dès que j'essaye de faire quelque chose de plus long impossible d'enregistrer :

休みの間、私は色々なことをしました。 本を読んだり、ぶつりをべんきょうしたり、テレビを見ました。
Pendant les vacances, j'ai fais diverses choses. J'ai lu des livres, étudié la physique, regardé la TV, etc.

Nombre d'essais avant abandon de l'idée d'enregistrer ce message : 8

Voici le code d'enregistrement des messages pour mon livre pour ceux qui veulent bien m'aider Souriant
Code:
session_start();
[...]
// Programme de vérification des données
// $_SESSION['nb'] correspond au code de l'image (protection contre les robots)
if($_POST['nom']!="" && $_POST['message']!="" && $_POST['previsualiser']=="0" && $_SESSION['nb']==sha1($_POST['nb']))
{
// Contient le login pour accéder à la base de données
include "../connexion.php";
// On définit les variables pour l'enregistrement du message
$jour=date("d/m/Y");
$heure=date("H:i:s");
$date=$jour." à ".$heure;
// On remplace les caractères qui pourrait gêner le traitement des données en php
$_POST['nom']=ereg_replace("[\]", " ", $_POST['nom']);
$_POST['message']=ereg_replace("[\]", " ", $_POST['message']);
$_POST['message']=str_replace("\n", "<br>", $_POST['message']);
connexion();
// On insère les données dans la table 'livre'
$requete="insert into livre(nom, message, date) values('".$_POST['nom']."', '".$_POST['message']."', '$date')";
mysql_query($requete);
mysql_error();
mysql_close();
// Informe l'internaute que son message est enregistré (normalement)
$_SESSION['ok']="ok";
// Redirige vers le livre d'or
header("Location: index.php");
}

Merci d'avance !

Cordialement,
Keanjyto.
Journalisée
Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL
« le: 11 Janvier 2009, 13:00:13 »

 Journalisée
K@cem
Never trust user input
Big boss
*****
Hors ligne Hors ligne

Messages: 2 724



Voir le profil WWW
« Répondre #1 le: 11 Janvier 2009, 18:05:50 »

Salut,
Comme tu l'as vu sur ton livre d'or j'ai pu écrire un message en gras sans passer par ton bbcode, c'est une grosse faille qu'il faut corriger rapidement en protégeant tes variables avec la fonction mysql_escape_string() : http://fr2.php.net/manual/fr/function.mysql-escape-string.php

Et sinon remplace ces 2 lignes :
mysql_query($requete);
mysql_error();
par :
mysql_query($requete) or die(mysql_error());

++
Journalisée

Le support ne se fait pas par MP, merci de le respecter !
Keanjyto
Bavard
***
Hors ligne Hors ligne

Messages: 170


Voir le profil WWW
« Répondre #2 le: 11 Janvier 2009, 20:31:26 »

Merci pour les conseils, grâce à ta correction le message d'erreur a pu s'afficher et m'a m'indiquait une erreur de syntaxe SQL donc après quelques recherches, voici le nouveau code (avec protection contre les attaques par injection aussi) :
Code:
if($_POST['nom']!="" && $_POST['message']!="" && $_POST['previsualiser']=="0" && $_SESSION['nb']==sha1($_POST['nb']))
{
include "../connexion.php";
$jour=date("d/m/Y");
$heure=date("H:i:s");
$date=$jour." &#224; ".$heure;
$id=$jour."-".$heure;
$_POST['nom']=ereg_replace("[\]", " ", $_POST['nom']);
// Convertir les caractères spéciaux éligibles en entitées HTML, conversion des entitées existantes également
$_POST['message']=htmlspecialchars($_POST['message'], ENT_QUOTES, "iso-8859-1", "1");
$_POST['message']=ereg_replace("[\]", " ", $_POST['message']);
$_POST['message']=str_replace("\n", "<br>", $_POST['message']);
// Si magic_quotes_gpc sur ON, annulation des effets sur les varaiables en supprimant les antislashes
if(get_magic_quotes_gpc())
{
$nom=stripslashes($_POST['nom']);
$message=stripslashes($_POST['message']);
}
else
{
$nom=$_POST['nom'];
$message=$_POST['message'];
}
// On effectue une requête sécurisée
$nom=mysql_real_escape_string($nom);
$message=mysql_real_escape_string($message);
connexion();
$requete="insert into livre (`nom`, `message`, `date`, `id`) values ('$nom', '$message', '$date', '$id')";
mysql_query($requete) or die(mysql_error());
mysql_close();
$_SESSION['ok']="ok";
header("Location: index.php");
}

Bonne soirée !

Cordialement,
Keanjyto.
« Dernière édition: 11 Janvier 2009, 21:32:35 par Keanjyto » Journalisée
Pages: [1]   Haut de page
  Imprimer  
 
Aller à:  

Propulsé par MySQL Propulsé par PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Dilber MC Theme by HarzeM
Page générée en 0.031 secondes avec 21 requêtes.