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 :

Probleme de liaison entre un formulaire et une base de données chez OVH


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 37
    Points : 27
    Points
    27
    Par défaut Probleme de liaison entre un formulaire et une base de données chez OVH
    Bonjour,

    J'ai créé pour un site un formulaire Contact (avec nom, adresse mail, sujet et texte). Ce formulaire doit d'une part insere les donnees dans une base de donnees MySql et d'autre part envoyer un mail a l'administrateur du site. Or apres installation chez Ovh (base et site) lorsque l'on clique sur le bouton envoi on obtient cela :

    raphael.lagarde1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /homez.87/sniazllb/old1/form.php on line 20
    Connection Impossible

    Chez Ovh le parametrage de l'hebergement mutaulise utilise fait que le Php 5 est utilisé.

    voici le code :
    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
     
    <?php
    if (isset($_POST['B1']))
    {
     // teste les valeurs.
    $nom=trim(addslashes($_POST['nom']));
    $objet=trim(addslashes($_POST['objet']));
    $texte=trim(addslashes($_POST['texte']));
    $mail=trim(addslashes($_POST['mail']));
     $tableau=array();
     $tableau=Explode("@",$mail,2);
     echo $tableau[0];
     if ($nom=="" || $nom=="Nom")
     {
       echo "Veuillez rentrer un nom";
     }elseif ($mail==""){
       echo "Rentrez une adresse mail";
     }elseif (!isset($tableau[1])) {
       echo"Rentrez une adresse valide";
     }else{
      if(!mysql_connect('mysql51-xx.pro','sniazllbbd2','xxxxx')){
        Echo'Connection Impossible';
        exit();
      } else{
       Echo'Connexion réussie';
      }
      Mysql_select_db('sniazllbbd2');
      $requete="insert formulaire SET nom='$nom',objet='$objet',texte='$texte', mail='$mail'" ;
      $resultat=mysql_query($requete);
      //die ();
    // envoi par mail
    $date=date('Ymd');
    $message=date("d/m/Y H:m:s\n")."\n Nouveau contact : "."\n nom : ".$nom."\n Adresse mail : ".$mail."\n Objet : ".$objet;
    $entetes = "From: <a href="mailto:raphael.lagarde@xxx.com">raphael.lagarde@xxx.com</a>\nReply-to: <a href="mailto:raphael.lagarde@xxx.com">raphael.lagarde@xxx.com</a>\n";
    $sujet="Contact a partir du site de la part de ".$nom;
    $webmaster=('raphael.lagarde@xxx.com');
    mail($webmaster,$sujet,$message,$entetes);
     
     }
    }
    $form="<form method=\"POST\">
      <p>Nom : <input type=\"text\" name=\"nom\" size=\"30\" value=\"Nom\"></p>
      <p>Votre adresse mail : <input type=\"text\" name=\"mail\" size=\"30\" value=\"Votre adresse mail\"></p>
      <p>Objet : <input type=\"text\" name=\"objet\" size=\"40\" value=\"Objet\"></p>
      <p>Texte : <input type=\"text\" name=\"texte\" size=\"250\" value=\"Texte\"></p>
      <p><input type=\"submit\" value=\"Envoyer\" name=\"B1\"></p>
    </form>";
    echo $form;
     
    ?>
    Quelqu'un a t il une solution a me proposer, sur le web j'ai rien trouver comme solution ? un conseil ? une idée ?

    SVP Merci

    Raphael

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    aucun rapport avec l'encodage, c'est juste un problème de connexion (édite ton titre)

  3. #3
    Membre éprouvé Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Points : 1 275
    Points
    1 275
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /homez.87/sniazllb/old1/form.php on line 20
    T'es sûr de tes paramètres de connexion?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_connect('mysql51-xx.pro','sniazllbbd2','xxxxx')

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 37
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    Suite à mon probleme de connexion, j'ai retravaille mon code, le voici :

    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
     
    <?php
    if (isset($_POST['B1']))
    {
     // teste les valeurs.
    $nom=trim(addslashes($_POST['nom']));
    $objet=trim(addslashes($_POST['objet']));
    $texte=trim(addslashes($_POST['texte']));
    $mail=trim(addslashes($_POST['mail']));
     $tableau=array();
     $tableau=Explode("@",$mail,2);
     echo $tableau[0];
     if ($nom=="" || $nom=="Nom")
     {
       echo "Veuillez rentrer un nom";
     }elseif ($mail==""){
       echo "Rentrez une adresse mail";
     }elseif (!isset($tableau[1])) {
       echo"Rentrez une adresse valide";
     }else{
      if(!mysql_connect('mysql51-26.pro','sniazllbbd2','xxxxxxxx')){
        Echo'Connection Impossible';
        exit();
      } else{
       Echo'Connexion réussie message transmis';
      }
      Mysql_select_db('sniazllbbd2');
      $requete="INSERT formulaire SET nom='$nom',objet='$objet',texte='$texte', mail='$mail'" ;
      $resultat=mysql_query($requete);
      //die ();
    // envoi par mail
    $date=date('Ymd');
    $message=date("d/m/Y H:m:s\n")."\n Nouveau contact :"."\n Nom :".$nom."\n Adresse mail :".$mail."\n Objet :".$objet."\n Texte :".$texte;
    $entetes = "From: $mail\nReply-to: $mail\n";
    $sujet="Contact site S de la part de ".$nom;
    $webmaster=('raphael.1@gmail.com');
    mail($webmaster,$sujet,$message,$entetes);
     
     }
    }
    $form="<form method=\"POST\">
      <p>Nom : <input type=\"text\" name=\"nom\" size=\"30\" value=\"Nom\"></p>
      <p>Votre adresse mail : <input type=\"text\" name=\"mail\" size=\"30\" value=\"Votre adresse mail\"></p>
      <p>Objet : <input type=\"text\" name=\"objet\" size=\"40\" value=\"Objet\"></p>
      <p>Texte : <input type=\"text\" name=\"texte\" size=\"250\" value=\"Texte\"></p>
      <p><input type=\"submit\" value=\"Envoyer\" name=\"B1\"></p>
    </form>";
    echo $form;
     
    ?>
    Je vois afficher maintenant le message "connexion réussie" s'affiche après avoir clique sur le bouton et le mail arrive sur la boite mail mais rien ne s' insert dans la table "formulaire" de ma base. La table comporte les 4 champs correspondant au formulaire. Quelqu'un aurait -il une idee ? svp merci

    Raphael

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour Raphael,
    plusieurs remarques sur ton code :
    1/ Pas de majuscules dans les noms de fonction : Explode -> explode ; Echo -> echo ; Mysql_select_db -> mysql_select_db
    2/ AUCUNE PROTECTION contre injection SQL !
    3/ Gestion d'erreurs incomplète (test de validité de l'email ?)
    4/ erreur de syntaxe dans la requete (il manque INTO)
    5/ Quel intérêt de mettre le formulaire dans une variable php avant de l'afficher ?
    Dernière modification par Invité ; 26/11/2011 à 10h21.

  6. #6
    Invité
    Invité(e)
    Par défaut
    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    <?php
    // Initalisation
    	$validContact 	= 0;
    	$MsgErrContact 	= '';
    	$nom 		= 'Nom';
    	$mail 		= 'Votre adresse mail';
    	$objet 		= 'Objet';
    	$texte 		= 'Texte';
     
    // si le formulaire est posté
    if (isset($_POST['B1']))
    {
    	// ----------------------------------------------------
    	// Récupération des valeurs des champs du formulaire
    	// ----------------------------------------------------
    	$nom 		= (isset($_POST['nom']) && trim($_POST['nom'])!='Nom')? 					trim(stripslashes($_POST['nom'])) : 'Nom';
    	$mail 		= (isset($_POST['mail']) && trim($_POST['mail'])!='Votre adresse mail')? 	trim(stripslashes($_POST['mail'])) : 'Votre adresse mail';
    	$objet 		= (isset($_POST['objet']) && trim($_POST['nom'])!='Objet')? 				trim(stripslashes($_POST['objet'])) : 'Objet';
    	$texte 		= (isset($_POST['texte']) && trim($_POST['nom'])!='Texte')? 				strip_tags(trim(stripslashes($_POST['texte']))) : 'Texte';	// textarea + protection anti-xss
    	// ----------------------------------------------------
    	// Gestion des erreurs
    	// ----------------------------------------------------
    	// champs obligatoires
    	$champ_obligatoire = array();
    	// Message
    	if ($nom=='' || $nom=='Nom') {					$validContact = 2;	$champ_obligatoire[] = 'Votre Nom'; }
    	if ($mail=='' || $mail=='Votre adresse mail') {	$validContact = 2;	$champ_obligatoire[] = 'Votre adresse mail'; }
    	if($validContact==2 && count($champ_obligatoire)>0) {
    		$MsgErrContact 	.= 'Remplissez les champs obligatoires : '.implode(', ',$champ_obligatoire).'<br />';
    	}
    	// -------------
    	// regex e-mail
    	$regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i'; 
    	// On vérifie que le format de l'e-mail est correct
    	if ($mail!='' && $mail!='Votre adresse mail' && !preg_match($regex_mail, $mail)) {
    		$MsgErrContact 	.= 'Adresse mail invalide (doit être de la forme : xxxx@xx.xx)'.'<br />';
    		$validContact 	= 2;
    	}
    	// -------------
    	// essai de connexion à la base de donnees
    	if(!mysql_connect('mysqlxxxxxxxx.pro','xxxxxxxx','xxxxxxxx')){
    		$MsgErrContact 	.= 'Connection à la base de donnees Impossible'.'<br />';
    		$validContact 	= 2;
    	}
    	// -------------
    	if ($validContact!=2) {
    		$validContact = 1;
    	}
    	// ----------------------------------------------------
    	// PAS d'ERREUR : TRAITEMENT
    	// ----------------------------------------------------
    	if($validContact == 1) {
     
    		// -------------
    		// 1/ PROTECTION contre injection SQL AVANT insertion en bdd
    		$bd_nom 	= mysql_real_escape_string($nom);
    		$bd_mail 	= mysql_real_escape_string($mail);
    		$bd_objet 	= mysql_real_escape_string($objet);
    		$bd_texte 	= mysql_real_escape_string($texte);
    		// -------------
    		// 2/ Enregistrement en base de données
    		mysql_select_db('xxxxxxxx');
    		$requete = "INSERT INTO formulaire SET nom='$bd_nom',objet='$bd_objet',texte='$bd_texte', mail='$bd_mail'" ;
    		$resultat = mysql_query($requete) or die('Erreur SQL :<br />'.$requete.'<br />'.mysql_error()); // en phase de test
    		// à remplacer par : $resultat = mysql_query($requete); // en production
    		// -------------
    		// 3/ ENVOI d'un email a l'administrateur
    		$message	= date("d/m/Y H:m:s\n")."\n".
    					" Nouveau contact :"."\n";
    					" Nom :".$nom."\n".
    					" Adresse mail :".$mail."\n".
    					" Objet :".$objet."\n".
    					" Texte :".$texte;
    		$entetes	= "From: $mail\nReply-to: $mail\n".
    					"MIME-Version: 1.0\r\n".
    					"Content-type: text/plain; charset=utf-8\r\n"; // (format TEXTE)
    		$sujet		= "Contact site S de la part de ".$nom;
    		$webmaster	= 'raphael.1@gmail.com';
    		mail($webmaster,$sujet,$message,$entetes);
    		// -------------
    	} // fin traitement
    } // fin si le formulaire est posté
    ?>
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    	<title>test</title>
    	<style type="text/css">
    	label { float:left; width:150px; text-align:right; margin-right:5px; }
    	</style>
    </head>
    <body>
    <?php // Messages
    if($validContact==1) { // message OK ?>
    	<p>Votre message a bien été envoyé</p>
    <?php
    } elseif($validContact==2) { // message ERREUR ?>
    	<p><?php echo $MsgErrContact; ?></p>
    <?php } ?>
     
    <?php // Formulaire
    if($validContact!=1) { ?>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    	<p>
    		<label for="idnom">Nom : </label>
    		<input name="idnom" name="nom" type="text" size="30" value="<?php echo $nom; ?>">
    	</p>
    	<p>
    		<label for="idmail">Votre adresse mail : </label>
    		<input name="idmail" name="mail" type="text" size="30" value="<?php echo $mail; ?>">
    	</p>
    	<p>
    		<label for="idobjet">Objet : </label>
    		<input name="idobjet" name="objet" type="text" size="50" value="<?php echo $objet; ?>">
    	</p>
    	<p>
    		<label for="idtexte">Texte : </label>
    		<textarea name="idtexte" name="texte" cols="40" rows="3"><?php echo $texte; ?></textarea>
    	</p>
    	<p>
    		<label>&nbsp;</label>
    		<input type="submit" value="Envoyer" name="B1">
    	</p>
    </form>
    <?php } // fin formulaire ?>
     
    </body>
    </html>

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 37
    Points : 27
    Points
    27
    Par défaut Probleme de code (suite)
    Bonjour,

    Merci pour cette reponse.

    J'ai lu tenter de tout comprendre et j'ai injecte ce code sur mon serveur mutualise chez Ovh

    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    <?php
    // Initalisation
    	$validContact 	= 0;
    	$MsgErrContact 	= '';
    	$nom 		= 'Nom';
    	$mail 		= 'Votre adresse mail';
    	$objet 		= 'Objet';
    	$texte 		= 'Texte';
     
    // si le formulaire est posté
    if (isset($_POST['B1']))
    {
    	// ----------------------------------------------------
    	// Récupération des valeurs des champs du formulaire
    	// ----------------------------------------------------
    	$nom 		= (isset($_POST['nom']) && trim($_POST['nom'])!='Nom')? 					trim(stripslashes($_POST['nom'])) : 'Nom';
    	$mail 		= (isset($_POST['mail']) && trim($_POST['mail'])!='Votre adresse mail')? 	trim(stripslashes($_POST['mail'])) : 'Votre adresse mail';
    	$objet 		= (isset($_POST['objet']) && trim($_POST['nom'])!='Objet')? 				trim(stripslashes($_POST['objet'])) : 'Objet';
    	$texte 		= (isset($_POST['texte']) && trim($_POST['nom'])!='Texte')? 				strip_tags(trim(stripslashes($_POST['texte']))) : 'Texte';	// textarea + protection anti-xss
    	// ----------------------------------------------------
    	// Gestion des erreurs
    	// ----------------------------------------------------
    	// champs obligatoires
    	$champ_obligatoire = array();
    	// Message
    	if ($nom=='' || $nom=='Nom') {					$validContact = 2;	$champ_obligatoire[] = 'Votre Nom'; }
    	if ($mail=='' || $mail=='Votre adresse mail') {	$validContact = 2;	$champ_obligatoire[] = 'Votre adresse mail'; }
    	if($validContact==2 && count($champ_obligatoire)>0) {
    		$MsgErrContact 	.= 'Remplissez les champs obligatoires : '.implode(', ',$champ_obligatoire).'<br />';
    	}
    	// -------------
    	// regex e-mail
    	$regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i'; 
    	// On vérifie que le format de l'e-mail est correct
    	if ($mail!='' && $mail!='Votre adresse mail' && !preg_match($regex_mail, $mail)) {
    		$MsgErrContact 	.= 'Adresse mail invalide (doit être de la forme : <a href="mailto:xxxx@xx.xx">xxxx@xx.xx</a>)'.'<br />';
    		$validContact 	= 2;
    	}
    	// -------------
    	// essai de connexion à la base de donnees
    	if(!mysql_connect('mysql51-26.pro','sniazllbbd2','XXXXXXXX')){
    		$MsgErrContact 	.= 'Connection à la base de donnees Impossible'.'<br />';
    		$validContact 	= 2;
    	}
    	// -------------
    	if ($validContact!=2) {
    		$validContact = 1;
    	}
    	// ----------------------------------------------------
    	// PAS d'ERREUR : TRAITEMENT
    	// ----------------------------------------------------
    	if($validContact == 1) {
     
    		// -------------
    		// 1/ PROTECTION contre injection SQL AVANT insertion en bdd
    		$bd_nom 	= mysql_real_escape_string($nom);
    		$bd_mail 	= mysql_real_escape_string($mail);
    		$bd_objet 	= mysql_real_escape_string($objet);
    		$bd_texte 	= mysql_real_escape_string($texte);
    		// -------------
    		// 2/ Enregistrement en base de données
    		mysql_select_db('sniazllbbd2');
    		$requete = "INSERT INTO formulaire SET nom='$bd_nom',objet='$bd_objet',texte='$bd_texte', mail='$bd_mail'" ;
    		$resultat = mysql_query($requete);
    		// -------------
    		// 3/ ENVOI d'un email a l'administrateur
    		$message	= date("d/m/Y H:m:s\n")."\n".
    					" Nouveau contact :"."\n";
    					" Nom :".$nom."\n".
    					" Adresse mail :".$mail."\n".
    					" Objet :".$objet."\n".
    					" Texte :".$texte;
    		$entetes	= "From: $mail\nReply-to: $mail\n".
    					"MIME-Version: 1.0\r\n".
    					"Content-type: text/plain; charset=utf-8\r\n"; // (format TEXTE)
    		$sujet		= "Contact site S de la part de ".$nom;
    		$webmaster	= 'raphael.1@gmail.com';
    		mail($webmaster,$sujet,$message,$entetes);
    		// -------------
    	} // fin traitement
    } // fin si le formulaire est posté
    ?>
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    	<title>Formulaire contact</title>
    	<style type="text/css">
    	label { float:left; width:150px; text-align:right; margin-right:5px; }
    	</style>
    </head>
    <body>
    <?php // Messages
    if($validContact==1) { // message OK ?>
    	<p>Votre message a bien été envoyé</p>
    <?php
    } elseif($validContact==2) { // message ERREUR ?>
    	<p><?php echo $MsgErrContact; ?></p>
    <?php } ?>
     
    <?php // Formulaire
    if($validContact!=1) { ?>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    	<p>
    		<label for="idnom">Nom : </label>
    		<input name="idnom" name="nom" type="text" size="30" value="<?php echo $nom; ?>">
    	</p>
    	<p>
    		<label for="idmail">Votre adresse mail : </label>
    		<input name="idmail" name="mail" type="text" size="30" value="<?php echo $mail; ?>">
    	</p>
    	<p>
    		<label for="idobjet">Objet : </label>
    		<input name="idobjet" name="objet" type="text" size="50" value="<?php echo $objet; ?>">
    	</p>
    	<p>
    		<label for="idtexte">Texte : </label>
    		<textarea name="idtexte" name="texte" cols="40" rows="3"><?php echo $texte; ?></textarea>
    	</p>
    	<p>
    		<label>&nbsp;</label>
    		<input type="submit" value="Envoyer" name="B1">
    	</p>
    </form>
    <?php } // fin formulaire ?>
     
    </body>
    </html>

    Mais quand je test a partir de la page :
    http://www.old1.snia.net/form.php

    j'obtiens le message suivant :

    Remplissez les champs obligatoires : Votre Nom, Votre adresse mail
    et rien ne va sur ma base

    Quelqu'un pourrait il, à nouveau, m'aider ?

    SVP Merci

    Raphael (vraiment debutant en php quand je vous lis)

  8. #8
    Invité
    Invité(e)
    Par défaut
    Oups ! erreur de ma part :
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <p>
    <label for="idnom">Nom : </label>
    <input id="idnom" name="nom" type="text" size="30" value="<?php echo $nom; ?>">
    </p>
    <p>
    <label for="idmail">Votre adresse mail : </label>
    <input id="idmail" name="mail" type="text" size="30" value="<?php echo $mail; ?>">
    </p>
    <p>
    <label for="idobjet">Objet : </label>
    <input id="idobjet" name="objet" type="text" size="50" value="<?php echo $objet; ?>">
    </p>
    <p>
    <label for="idtexte">Texte : </label>
    <textarea id="idtexte" name="texte" cols="40" rows="3"><?php echo $texte; ?></textarea>
    </p>
    <p>
    <label>&nbsp;</label>
    <input type="submit" value="Envoyer" name="B1">
    </p>
    </form>

  9. #9
    Invité
    Invité(e)
    Par défaut
    Voici une version "améliorée" du script
    (avec des valeurs par défaut, et un peu de JavaScript dans le formulaire) :
    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    <?php
    // Initalisation
    	$validContact 	= 0;
    	$MsgErrContact 	= '';
    	$defaut_nom 	= 'Nom';
    	$defaut_mail 	= 'Votre adresse mail';
    	$defaut_objet 	= 'Objet';
    	$defaut_texte 	= 'Texte';
    	$nom 		= $defaut_nom;
    	$mail 		= $defaut_mail;
    	$objet 		= $defaut_objet;
    	$texte 		= $defaut_texte;
     
    // si le formulaire est posté
    if (isset($_POST['B1']))
    {
    	// ----------------------------------------------------
    	// Récupération des valeurs des champs du formulaire
    	// ----------------------------------------------------
    	$nom 		= (isset($_POST['nom']) && trim($_POST['nom'])!=$defaut_nom)? 		trim(stripslashes($_POST['nom'])) : $defaut_nom;
    	$mail 		= (isset($_POST['mail']) && trim($_POST['mail'])!=$defaut_mail)? 	trim(stripslashes($_POST['mail'])) : $defaut_mail;
    	$objet 		= (isset($_POST['objet']) && trim($_POST['nom'])!=$defaut_objet)? 	trim(stripslashes($_POST['objet'])) : $defaut_objet;
    	$texte 		= (isset($_POST['texte']) && trim($_POST['nom'])!=$defaut_texte)? 	strip_tags(trim(stripslashes($_POST['texte']))) : $defaut_texte;	// textarea + protection anti-xss
    	// ----------------------------------------------------
    	// Gestion des erreurs
    	// ----------------------------------------------------
    	// champs obligatoires
    	$champ_obligatoire = array();
    	// Message
    	if ($nom=='' || $nom==$defaut_nom) {	$validContact = 2;	$champ_obligatoire[] = 'Votre Nom'; }
    	if ($mail=='' || $mail==$defaut_mail) {	$validContact = 2;	$champ_obligatoire[] = 'Votre adresse mail'; }
    	if($validContact==2 && count($champ_obligatoire)>0) {
    		$MsgErrContact 	.= 'Remplissez les champs obligatoires : '.implode(', ',$champ_obligatoire).'<br />';
    	}
    	// -------------
    	// regex e-mail
    	$regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i'; 
    	// On vérifie que le format de l'e-mail est correct
    	if ($mail!='' && $mail!='Votre adresse mail' && !preg_match($regex_mail, $mail)) {
    		$MsgErrContact 	.= 'Adresse mail invalide (doit être de la forme : xxxx@xx.xx)'.'<br />';
    		$validContact 	= 2;
    	}
    	// -------------
    	// essai de connexion à la base de donnees
    	if(!mysql_connect('mysql51-26.pro','sniazllbbd2','XXXXXX')){
    		$MsgErrContact 	.= 'Connection à la base de donnees Impossible'.'<br />';
    		$validContact 	= 2;
    	}
    	// -------------
    	if ($validContact!=2) {
    		$validContact = 1;
    	}
    	// ----------------------------------------------------
    	// PAS d'ERREUR : TRAITEMENT
    	// ----------------------------------------------------
    	if($validContact == 1) {
     
    		// -------------
    		// 1/ PROTECTION contre injection SQL AVANT insertion en bdd
    		$bd_nom 	= mysql_real_escape_string($nom);
    		$bd_mail 	= mysql_real_escape_string($mail);
    		$bd_objet 	= mysql_real_escape_string($objet);
    		$bd_texte 	= mysql_real_escape_string($texte);
    		// -------------
    		// 2/ Enregistrement en base de données
    		mysql_select_db('sniazllbbd2');
    		$requete = "INSERT INTO formulaire SET nom='$bd_nom',objet='$bd_objet',texte='$bd_texte', mail='$bd_mail'" ;
    		$resultat = mysql_query($requete);
    		// -------------
    		// 3/ ENVOI d'un email a l'administrateur
    		$message	= date("d/m/Y H:m:s\n")."\n".
    					" Nouveau contact :"."\n";
    					" Nom :".$nom."\n".
    					" Adresse mail :".$mail."\n".
    					" Objet :".$objet."\n".
    					" Texte :".$texte;
    		$entetes	= "From: $mail\nReply-to: $mail\n".
    					"MIME-Version: 1.0\r\n".
    					"Content-type: text/plain; charset=utf-8\r\n"; // (format TEXTE)
    		$sujet		= "Contact site S de la part de ".$nom;
    		$webmaster	= 'raphael.1@gmail.com';
    		mail($webmaster,$sujet,$message,$entetes);
    		// -------------
    	} // fin traitement
    } // fin si le formulaire est posté
    ?>
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    	<title>Formulaire contact</title>
    	<style type="text/css">
    	label { float:left; width:150px; text-align:right; margin-right:5px; }
    	</style>
    </head>
    <body>
    <?php // Messages
    if($validContact==1) { // message OK ?>
    	<p>Votre message a bien été envoyé</p>
    <?php
    } elseif($validContact==2) { // message ERREUR ?>
    	<p><?php echo $MsgErrContact; ?></p>
    <?php } ?>
     
    <?php // Formulaire
    if($validContact!=1) { ?>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    	<p>
    		<label for="idnom">Nom : </label>
    		<input id="idnom" name="nom" type="text" size="30" value="<?php echo $nom; ?>" onfocus="if(this.value=='<?php echo $defaut_nom; ?>'){ this.value=''; }" onblur="if(this.value==''){ this.value='<?php echo $defaut_nom; ?>'; }">
    	</p>
    	<p>
    		<label for="idmail">Votre adresse mail : </label>
    		<input id="idmail" name="mail" type="text" size="30" value="<?php echo $mail; ?>" onfocus="if(this.value=='<?php echo $defaut_mail; ?>'){ this.value=''; }" onblur="if(this.value==''){ this.value='<?php echo $defaut_mail; ?>'; }">
    	</p>
    	<p>
    		<label for="idobjet">Objet : </label>
    		<input id="idobjet" name="objet" type="text" size="50" value="<?php echo $objet; ?>" onfocus="if(this.value=='<?php echo $defaut_objet; ?>'){ this.value=''; }" onblur="if(this.value==''){ this.value='<?php echo $defaut_objet; ?>'; }">
    	</p>
    	<p>
    		<label for="idtexte">Texte : </label>
    		<textarea id="idtexte" name="texte" cols="40" rows="3" onfocus="if(this.value=='<?php echo $defaut_texte; ?>'){ this.value=''; }" onblur="if(this.value==''){ this.value='<?php echo $defaut_texte; ?>'; }"><?php echo $texte; ?></textarea>
    	</p>
    	<p>
    		<label>&nbsp;</label>
    		<input type="submit" value="Envoyer" name="B1">
    	</p>
    </form>
    <?php } // fin formulaire ?>
     
    </body>
    </html>

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 37
    Points : 27
    Points
    27
    Par défaut Probleme de code (suite)
    Bonjour,

    Merci pour cette réponse.

    Voici le code utilise sur le serveur mutualise de OVH :

    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    <?php
    // Initalisation
    	$validContact 	= 0;
    	$MsgErrContact 	= '';
    	$defaut_nom 	= 'Nom';
    	$defaut_mail 	= 'Votre adresse mail';
    	$defaut_objet 	= 'Objet';
    	$defaut_texte 	= 'Texte';
    	$nom 		= $defaut_nom;
    	$mail 		= $defaut_mail;
    	$objet 		= $defaut_objet;
    	$texte 		= $defaut_texte;
     
    // si le formulaire est posté
    if (isset($_POST['B1']))
    {
    	// ----------------------------------------------------
    	// Récupération des valeurs des champs du formulaire
    	// ----------------------------------------------------
    	$nom 		= (isset($_POST['nom']) && trim($_POST['nom'])!=$defaut_nom)? 		trim(stripslashes($_POST['nom'])) : $defaut_nom;
    	$mail 		= (isset($_POST['mail']) && trim($_POST['mail'])!=$defaut_mail)? 	trim(stripslashes($_POST['mail'])) : $defaut_mail;
    	$objet 		= (isset($_POST['objet']) && trim($_POST['nom'])!=$defaut_objet)? 	trim(stripslashes($_POST['objet'])) : $defaut_objet;
    	$texte 		= (isset($_POST['texte']) && trim($_POST['nom'])!=$defaut_texte)? 	strip_tags(trim(stripslashes($_POST['texte']))) : $defaut_texte;	// textarea + protection anti-xss
    	// ----------------------------------------------------
    	// Gestion des erreurs
    	// ----------------------------------------------------
    	// champs obligatoires
    	$champ_obligatoire = array();
    	// Message
    	if ($nom=='' || $nom==$defaut_nom) {	$validContact = 2;	$champ_obligatoire[] = 'Votre Nom'; }
    	if ($mail=='' || $mail==$defaut_mail) {	$validContact = 2;	$champ_obligatoire[] = 'Votre adresse mail'; }
    	if($validContact==2 && count($champ_obligatoire)>0) {
    		$MsgErrContact 	.= 'Remplissez les champs obligatoires : '.implode(', ',$champ_obligatoire).'<br />';
    	}
    	// -------------
    	// regex e-mail
    	$regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i'; 
    	// On vérifie que le format de l'e-mail est correct
    	if ($mail!='' && $mail!='Votre adresse mail' && !preg_match($regex_mail, $mail)) {
    		$MsgErrContact 	.= 'Adresse mail invalide (doit être de la forme : <a href="mailto:xxxx@xx.xx">xxxx@xx.xx</a>)'.'<br />';
    		$validContact 	= 2;
    	}
    	// -------------
    	// essai de connexion à la base de donnees
    	if(!mysql_connect('mysql51-26.pro','sniazllbbd2','XXXXXXX')){
    		$MsgErrContact 	.= 'Connection à la base de donnees Impossible'.'<br />';
    		$validContact 	= 2;
    	}
    	// -------------
    	if ($validContact!=2) {
    		$validContact = 1;
    	}
    	// ----------------------------------------------------
    	// PAS d'ERREUR : TRAITEMENT
    	// ----------------------------------------------------
    	if($validContact == 1) {
     
    		// -------------
    		// 1/ PROTECTION contre injection SQL AVANT insertion en bdd
    		$bd_nom 	= mysql_real_escape_string($nom);
    		$bd_mail 	= mysql_real_escape_string($mail);
    		$bd_objet 	= mysql_real_escape_string($objet);
    		$bd_texte 	= mysql_real_escape_string($texte);
    		// -------------
    		// 2/ Enregistrement en base de données
    		mysql_select_db('sniazllbbd2');
    		$requete = "INSERT INTO formulaire SET nom='$bd_nom',objet='$bd_objet',texte='$bd_texte', mail='$bd_mail'" ;
    		$resultat = mysql_query($requete);
    		// -------------
    		// 3/ ENVOI d'un email a l'administrateur
    		$message	= date("d/m/Y H:m:s\n")."\n".
    					" Nouveau contact :"."\n";
    					" Nom :".$nom."\n".
    					" Adresse mail :".$mail."\n".
    					" Objet :".$objet."\n".
    					" Texte :".$texte;
    		$entetes	= "From: $mail\nReply-to: $mail\n".
    					"MIME-Version: 1.0\r\n".
    					"Content-type: text/plain; charset=utf-8\r\n"; // (format TEXTE)
    		$sujet		= "Contact site SNIA de la part de ".$nom;
    		$webmaster	= 'raphael.1@gmail.com';
    		mail($webmaster,$sujet,$message,$entetes);
    		// -------------
    	} // fin traitement
    } // fin si le formulaire est posté
    ?>
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    	<title>Formulaire contact</title>
    	<style type="text/css">
    	label { float:left; width:150px; text-align:right; margin-right:5px; }
    	</style>
    </head>
    <body>
    <?php // Messages
    if($validContact==1) { // message OK ?>
    	<p>Votre message a bien été envoyé</p>
    <?php
    } elseif($validContact==2) { // message ERREUR ?>
    	<p><?php echo $MsgErrContact; ?></p>
    <?php } ?>
     
    <?php // Formulaire
    if($validContact!=1) { ?>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    	<p>
    		<label for="idnom">Nom : </label>
    		<input id="idnom" name="nom" type="text" size="30" value="<?php echo $nom; ?>" onfocus="if(this.value=='<?php echo $defaut_nom; ?>'){ this.value=''; }" onblur="if(this.value==''){ this.value='<?php echo $defaut_nom; ?>'; }">
    	</p>
    	<p>
    		<label for="idmail">Votre adresse mail : </label>
    		<input id="idmail" name="mail" type="text" size="30" value="<?php echo $mail; ?>" onfocus="if(this.value=='<?php echo $defaut_mail; ?>'){ this.value=''; }" onblur="if(this.value==''){ this.value='<?php echo $defaut_mail; ?>'; }">
    	</p>
    	<p>
    		<label for="idobjet">Objet : </label>
    		<input id="idobjet" name="objet" type="text" size="50" value="<?php echo $objet; ?>" onfocus="if(this.value=='<?php echo $defaut_objet; ?>'){ this.value=''; }" onblur="if(this.value==''){ this.value='<?php echo $defaut_objet; ?>'; }">
    	</p>
    	<p>
    		<label for="idtexte">Texte : </label>
    		<textarea id="idtexte" name="texte" cols="40" rows="3" onfocus="if(this.value=='<?php echo $defaut_texte; ?>'){ this.value=''; }" onblur="if(this.value==''){ this.value='<?php echo $defaut_texte; ?>'; }"><?php echo $texte; ?></textarea>
    	</p>
    	<p>
    		<label>&nbsp;</label>
    		<input type="submit" value="Envoyer" name="B1">
    	</p>
    </form>
    <?php } // fin formulaire ?>
     
    </body>
    </html>


    Quand on appui sur le bouton envoyer, on voit s'afficher sur la page du site :

    Votre message a bien �t� envoy�
    et le mail envoyé ne contient pas d'objet ni de texte, il affiche :

    26/11/2011 14:11:42

    Nouveau contact :

    et d'autre part il n'y a pas d'enregistrement dans la base de données (cf pièce jointe)

    Quelqu'un aurait il une idée ? SVP Merci

    Raphael
    Fichiers attachés Fichiers attachés

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    la correction du code suppose de ta part un minimum de connaissances en php, et surtout d'effort de compréhension du code.

    Je pense que le code que j'ai fourni est suffisamment clair et simple à comprendre.

    A toi maintenant de le tester, de mettre des "echo ..." pour afficher les variables, ou un "or die ..." pour vérifier que la requête s'effectue.

    PS : pour corriger les caractères bizarres ("Votre message a bien ?t? envoy?") :
    => Le fichier étant défini en utf-8, il faut l'encoder en "utf-8 sans BOM".

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 37
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    Merci pour ton aide.

    Suite a nos échanges de code j'ai compris en parti d'où venait mes petits soucis.

    J'apprends tranquillement.

    Merci

    Raphael

Discussions similaires

  1. XML/HTML creation d'un formulaire pour une base de données
    Par pillywiggins dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 23/10/2007, 08h43
  2. [MySQL] Créer un formulaire et une base de données
    Par hitch86 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/09/2007, 12h07
  3. Probleme de liaison entre deux tables d'une base de donnees
    Par blondelle dans le forum C++Builder
    Réponses: 32
    Dernier message: 12/04/2007, 18h09
  4. ajout dans un formulaire et une base de donnée
    Par mademoizel dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/06/2006, 14h42
  5. [MySQL] Génération automatique de formulaire sur une base de données
    Par Tr@nkill dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 04/04/2006, 14h28

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