IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Erreur livre d'or


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Points : 103
    Points
    103
    Par défaut Erreur livre d'or
    Bonjour,
    J'ai récupéré un script sur un site que j''adapte pour mon site mais voila j'ai des erreurs.
    1 - J'ai un mesage d'erreur voir capture écran en pj)
    2 - les données ne s'insert pas dans la table prévu à cette effets
    pour info je suis encor débutant et j'essaie de me former

    voici mon code ( pour la praticité j'ai tout mon script dans un seul fichier formulaire+traitement - envoi+affichage)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
       <head>
           <title>Bienvenue sur mon site !</title>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    	   <link rel="stylesheet" media="screen" type="text/css" title="Exemple" href="../css/div.css" />
    <head><title>Vos impression</title><head>
     
    <body>
    <?php
    include("../inc/inc_conexion.php");
     
    	/* 1) Enregistrement d'un message envoyé :  */
    	if(isset($_POST['pseudo']) AND isset($_POST['message']))
    	{
    	     $pseudo = $_POST['pseudo']['tmp_name'];
    	     $message = $_POST['message']['tmp_name'];
    	     $message = nl2br($message);
     
    $requete = "INSERT INTO livreor VALUES('','$pseudo', '$message')";
    echo ($requete);
    mysql_query($requete) or die(mysql_error());	 
     
    	}	
    	/* 2) Ecriture des liens vers les pages : */
    	// Fixation du nombre de message par page :  
    	$message_number_per_page = 20;
    	// Récupération du nombre total de message : 
    	$contened_message = mysql_query('SELECT COUNT(*) AS nbr_message FROM livreor') or die(mysql_error());
    	$message_number_temp = mysql_fetch_array($contened_message);
    	$total_message_number = $message_number_temp['nbr_message'];
    	// Détermination du nombre total de page : 
    	$page_number = ceil($total_message_number/$message_number_per_page );
    	// Affichage des pages 
    	echo 'Page : ';
    	for($i = 1; $i < $page_number; $i++)
    	{
    	   echo '<a href="journal.php?page=' . $i. '">' . $i . '</a>';
    	}
    ?>
    </p>
     
    	<!-- 3) Ecriture des messages  : -->
    <?php
    	if(isset($_GET['page']))
    	{
    		$page = $_GET['page'];		// Récupération du numéro de la page : 
    	}
    	else
    	{
    		$page = 1;	// Si y a pas de page c'est que on se connecte la première fois 
    	}
    	// Recherche du nombre de message à afficher tout en limitant ce nombre par mysql LIMIT
    	$limit_message = ($page - 1)*$message_number_per_page;
    	$message_to_display = mysql_query('SELECT * FROM livreor ORDER By id DESC LIMIT ' .  $limit_message. ',' . $message_number_per_page) or die(mysql_error());
    	while($resultat = mysql_fetch_array($message_to_display))
    	{
    		echo '<p><strong>' . $resultat['pseudo'].'</strong> a ecrit : <br />' . $resultat['message'].'</p>';
    	}
    include("../inc/stop.php");
    ?>
     
     <form action="journal.php" method="post">
    		<fieldset>
    			<legend>Formulaire pour le livre dor </legend>
    			<label for="pseudo"> Date du jour </label>: 
    			<input type="text" id="pseudo" name="pseudo" /> 
                            <br /><br />
    			<label for="message"> Message </label>: 
    			<textarea row="5" col="25" id="message"  name="message" > </textarea>
    			<br />
    			<input type="submit" value="Envoyer" />
    		</fieldset>
    	  </form>
     
     
     
     
    </body>
    </html>
    Merci de votre aide
    Runcafre91

  2. #2
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    N'utilise surtout pas ce script.
    Il y a des enormes failles de securité : hack par injection SQL (cf wikipedia)
    En gros, n'importe qui peut effacer tes tables SQL.

    Z.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Points : 103
    Points
    103
    Par défaut
    Citation Envoyé par Zwiter Voir le message
    N'utilise surtout pas ce script.
    Il y a des enormes failles de securité : hack par injection SQL (cf wikipedia)
    En gros, n'importe qui peut effacer tes tables SQL.

    Z.
    Bonjour,

    Merci de votre conseil, mais auriez vous un script à me proposer dans ce cas.
    Deuxième chose si je sécurise ce code pensé vous que cela soit utilisable après correction des erreurs.

    Runcafre91

  4. #4
    Membre averti
    Avatar de onet
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2002
    Messages : 365
    Points : 344
    Points
    344
    Par défaut
    Salut,

    Alors, plusieurs points:

    - évite les pièces jointes au format doc, c'est pas nécessaire, une image jpg ou png étant tellement plus efficace
    - Effectivement, quelques problèmes sécuritaire. Pense à filtrer tes données avant de les injecter dans ta page, et évite d'utiliser le tableau de superglobal POST (ou GET) dans l'entier de ta page. Privilégie le traitement de tes variables en haut, et apèrs tu utilises tes variables nouvelles crées.
    - COncernant ton erreur, tu tente d'insérer un champ vide ('' = chaine de caractère) dans un champ autoincrément de type integer. Enlève l'information lorsque tu crée ta requete SQL, la valeur sera automatiquement mise à jour. (en supposant que tes champs s'appels pseudo et message, sinon adapte). De plus, évite de faire des insertion sans préciser le nom des champs. Si un jour tu dois rajouter une valeur, cela risque de ne plus fonctionner...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = "INSERT INTO livreor SET (pseudo, message) VALUES(,'$pseudo', '$message')"
    @Zwiter: lui dire de ne pas utiliser son script, c'est une chose, mais n'hésite pas à lui expliquer pourquoi, comment faire pour régler ce problème, ca l'aidera bien plus

    Onet

  5. #5
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Citation Envoyé par onet Voir le message
    @Zwiter: lui dire de ne pas utiliser son script, c'est une chose, mais n'hésite pas à lui expliquer pourquoi, comment faire pour régler ce problème, ca l'aidera bien plus
    Bien entendu, mais dans ma ptite tete je pense tjrs a priviliégier l'utilisation de scripts deja fait. Et il existe suffisement de scripts de livre d'or sur le net pour en recuperer un deja sécurisé.
    Et entre nous, j'ai expliqué la cause de la faille de sécurité.
    amicalement,
    Z.

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Points : 103
    Points
    103
    Par défaut
    Citation Envoyé par onet Voir le message
    Salut,

    Alors, plusieurs points:

    - évite les pièces jointes au format doc, c'est pas nécessaire, une image jpg ou png étant tellement plus efficace
    - Effectivement, quelques problèmes sécuritaire. Pense à filtrer tes données avant de les injecter dans ta page, et évite d'utiliser le tableau de superglobal POST (ou GET) dans l'entier de ta page. Privilégie le traitement de tes variables en haut, et apèrs tu utilises tes variables nouvelles crées.
    - COncernant ton erreur, tu tente d'insérer un champ vide ('' = chaine de caractère) dans un champ autoincrément de type integer. Enlève l'information lorsque tu crée ta requete SQL, la valeur sera automatiquement mise à jour. (en supposant que tes champs s'appels pseudo et message, sinon adapte). De plus, évite de faire des insertion sans préciser le nom des champs. Si un jour tu dois rajouter une valeur, cela risque de ne plus fonctionner...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = "INSERT INTO livreor SET (pseudo, message) VALUES(,'$pseudo', '$message')"
    @Zwiter: lui dire de ne pas utiliser son script, c'est une chose, mais n'hésite pas à lui expliquer pourquoi, comment faire pour régler ce problème, ca l'aidera bien plus

    Onet
    bonjour,

    Merci de votre aide, lorsque je modifie le script avec vos rectificatif, j'ai le message suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO livreor SET (pseudo, message) VALUES('b', ' ')Erreur de syntaxe près de '(pseudo, message) VALUES('b', ' ')' à la ligne 1
    Merci de votre aide

    Runcafre91

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/12/2011, 21h44
  2. [MySQL] Erreurs livre d'or en php
    Par jenyo7 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/12/2009, 16h57
  3. structure linéaire(cellule) erreur livre?
    Par miltone dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 09/04/2008, 16h04
  4. Réponses: 2
    Dernier message: 27/11/2007, 11h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo