Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/11/2011, 17h25   #1
Invité de passage
 
Inscription : novembre 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 20
Points : 3
Points : 3
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 :
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 :
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
Raphaelphp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 17h32   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 209
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 209
Points : 8 588
Points : 8 588
aucun rapport avec l'encodage, c'est juste un problème de connexion (édite ton titre)
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 14h46   #3
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
Code :
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 :
mysql_connect('mysql51-xx.pro','sniazllbbd2','xxxxx')
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre.

Linus Torvalds
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2011, 09h31   #4
Invité de passage
 
Inscription : novembre 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 20
Points : 3
Points : 3
Bonjour,

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

Code :
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
Raphaelphp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2011, 09h52   #5
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 994
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 994
Points : 5 787
Points : 5 787
Envoyer un message via Skype™ à jreaux62
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 ?
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2011, 10h40   #6
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 994
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 994
Points : 5 787
Points : 5 787
Envoyer un message via Skype™ à jreaux62
Code :
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>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2011, 11h47   #7
Invité de passage
 
Inscription : novembre 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 20
Points : 3
Points : 3
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 :
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 :

Citation:
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)
Raphaelphp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2011, 12h54   #8
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 994
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 994
Points : 5 787
Points : 5 787
Envoyer un message via Skype™ à jreaux62
Oups ! erreur de ma part :
Citation:
<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>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2011, 13h04   #9
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 994
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 994
Points : 5 787
Points : 5 787
Envoyer un message via Skype™ à jreaux62
Voici une version "améliorée" du script
(avec des valeurs par défaut, et un peu de JavaScript dans le formulaire) :
Code :
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>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2011, 14h28   #10
Invité de passage
 
Inscription : novembre 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 20
Points : 3
Points : 3
Par défaut Probleme de code (suite)

Bonjour,

Merci pour cette réponse.

Voici le code utilise sur le serveur mutualise de OVH :

Code :
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 :

Citation:
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
Type de fichier : doc Base.doc (241,5 Ko, 0 affichages)
Raphaelphp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2011, 15h04   #11
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 994
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 994
Points : 5 787
Points : 5 787
Envoyer un message via Skype™ à jreaux62
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".
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 12h22   #12
Invité de passage
 
Inscription : novembre 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 20
Points : 3
Points : 3
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
Raphaelphp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h48.


 
 
 
 
Partenaires

Hébergement Web