Aide dans un formulaire de contact ... :S

Eléphanteau du PHP | 27 Messages

23 juin 2010, 19:05

Bonjour,

Alors voilà je suis en pleine création de mon site et j'aimerais insérer un Formulaire de contact (C'est a dire ou l'on rentre nom,prenom,message... et sa arrive sur une boite mail TOUT EN PHP)
J'ai chercher un peu et j'ai trouver sa :

http://radservebeer.free.fr/outilswebmaster/ (allez dans GENERATOR puis SCRIPT PHP...)
Un site qui fait exactement ce que je veux mais le seul problème est que le formulaire marche très bien mais pas la page de redirection c'est a dire une fois le formulaire envoyer sa met une page d'erreur et non la page demander... j'utilise Microsoft Frontpage 2003 pour éditer mon site et FileZilla pour le publier (c'est un site .free.fr)
Pour voir le moment ou il parle de la page de remerciement dans le script faite Ctrl+F et tapez "remerciement" (sa vous évite de tout lire ^^)

Voici les codes que le site m'a demandé d'entrer peut être une erreur dans le code... Qui sait :

Insérez la partie PHP ci-dessous au tout début de la page, avant la balise <html>

<?php

// On vérifie si la fonction ini_set() a été désactivée...
$desactive = ini_get('disable_functions');
if (preg_match("/ini_set/i", "$desactive") == 0) {
// Si elle n'est pas désactivée, on définit ini_set de manière à n'afficher que les erreurs...
ini_set("error_reporting" , "E_ALL & ~E_NOTICE");
}

// Vérifier que le formulaire a été envoyé...
if (isset($_POST['envoi'])) {


//On commence une session pour enregistrer les variables du formulaire...

session_start();

$_SESSION['champ1'] = $_POST['champ1'];
$_SESSION['champ2'] = $_POST['champ2'];
$_SESSION['zone_email1'] = $_POST['zone_email1'];

//Enregistrement des zones de texte...
$_SESSION['zone_texte1'] = $_POST['zone_texte1'];

// Définir l\'icone apparaissant en cas d\'erreur...


// Définir sur 0 pour afficher un petit x de couleur rouge.
// Définir sur 1 pour afficher l\'image d\'une croix rouge telle que celle utilisée dans l\'assistant
// Si vous utilisez l\'option 1, l\'image de la croix rouge \'icone.gif\' doit se trouver dans le répertoire \'images\',
// ce dernier devant se trouver au même niveau que votre formulaire...
$flag_icone = 0;

// On vérifie si $flag_icone est défini sur 0 ou 1...
if ($flag_icone == 0) {
$icone = "<b><font size=\"3\" face=\"Arial, Verdana, Helvetica, sans-serif\" color=\"#CC0000\">x</font></b>";
} else {
$icone = "<img src=\"images/icone.gif\"";
}

// Définir l'indicateur d'erreur sur zéro...
$flag_erreur = 0;
// N'envoyer le formulaire que s'il n'y a pas d'erreurs...
if ($flag_erreur == 0) {

// Addresse de réception du formulaire
$email_dest = "[email protected]";
$sujet = "Salut pote";
$entetes ="MIME-Version: 1.0 \n";
$entetes .="From: Salut<[email protected]>\n";
$entetes .="Return-Path: Salut<[email protected]>\n";
$entetes .="Reply-To: Salut<[email protected]>\n";
$entetes .="Content-Type: text/html; charset=iso-8859-1 \n";
$partie_entete = "<html>\n<head>\n<title>Formulaire</title>\n<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>\n</head>\n<body bgcolor=#FFFFFF>\n";


//Partie HTML de l'e-mail...
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Votre Nom : = " . $_SESSION['champ1'] . "</font><br>\n";
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Votre Prenom : = " . $_SESSION['champ2'] . "</font><br>\n";
$partie_zone_email .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Votre adresse E-Mail : = " . $_SESSION['zone_email1'] . "</font><br>\n";
$partie_zone_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Votre message : = " . $_SESSION['zone_texte1'] . "</font><br>\n";


// Fin du message HTML
$fin = "</body></html>\n\n";

$sortie = $partie_entete . $partie_champs_texte . $partie_zone_email . $partie_listes . $partie_boutons . $partie_cases . $partie_zone_texte . $fin;


// Send the e-mail
if (@!mail($email_dest,$sujet,$sortie,$entetes)) {
echo("Envoi du formulaire impossible");
exit();
} else {

// Rediriger vers la page de remerciement
header("Location:http://jegagnefacile.free.fr/merci.php");
exit();
} // Fin else
} // Fin du if ($flag_erreur == 0) {
} // Fin de if POST
?>

Insérez la partie Javascript ci-dessous entre les balises <head> et </head> de votre page


<script language="JavaScript">


function verifSelection() {


if (document.mail_form.champ1.value == "") {
alert("Le nom est obligatoire")
return false
}

if (document.mail_form.champ2.value == "") {
alert("Le prénom est obligatoire")
return false
}

if (document.mail_form.zone_email1.value == "") {
alert("L\'adresse e-mail est obligatoire")
return false
}

invalidChars = " /:,;'"

for (i=0; i < invalidChars.length; i++) { // does it contain any invalid characters?
badChar = invalidChars.charAt(i)

if (document.mail_form.zone_email1.value.indexOf(badChar,0) > -1) {
alert("Votre adresse e-mail contient des caractères invalides. Veuillez vérifier.")
document.mail_form.zone_email1.focus()
return false
}
}

atPos = document.mail_form.zone_email1.value.indexOf("@",1) // there must be one "@" symbol
if (atPos == -1) {
alert('Votre adresse e-mail ne contient pas le signe "@". Veuillez vérifier.')
document.mail_form.zone_email1.focus()
return false
}

if (document.mail_form.zone_email1.value.indexOf("@",atPos+1) != -1) { // and only one "@" symbol
alert('Il ne doit y avoir qu\'un signe "@". Veuillez vérifier.')
document.mail_form.zone_email1.focus()
return false
}

periodPos = document.mail_form.zone_email1.value.indexOf(".",atPos)

if (periodPos == -1) { // and at least one "." after the "@"
alert('Vous avez oublié le point "." après le signe "@". Veuillez vérifier.')
document.mail_form.zone_email1.focus()
return false
}

if (periodPos+3 > document.mail_form.zone_email1.value.length) { // must be at least 2 characters after the
alert('Il doit y avoir au moins deux caractères après le signe ".". Veuillez vérifier.')
document.mail_form.zone_email1.focus()
return false
}

if (document.mail_form.zone_texte1.value == "") {
alert("Le Message est obligatoire")
return false
}

} // Fin de la fonction
</script>

Enfin, insérez la partie HTML ci-dessous entre les balises <body> et </body> de votre page.

<form name="mail_form" method="post" action="<?=$_SERVER['PHP_SELF']?>" onSubmit="return verifSelection()">
<div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif, Tahoma"><strong>Formulaire
de contact</strong></font></div><br><table align="center" width="566" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="16"><div align="center">
<font color="#CC0000" size="2" face="Verdana, Arial, Helvetica, sans-serif, Tahoma"><strong><?php
if ($erreur_champ1) {
echo(stripslashes($erreur_champ1));
} else {
if ($erreur_champ2) {
echo(stripslashes($erreur_champ2));
} else {
if ($erreur_email1) {
echo(stripslashes($erreur_email1));
} else {
if ($erreur_texte1) {
echo(stripslashes($erreur_texte1));
} else {
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
?>
</strong></font>
</div></td>
</tr>
</table>
<p align="center"></p><table width="566" border="0" align="center"><tr>
<td width="140"><div align="right"><font face="Verdana" size="2">Votre Nom : </font></div></td>
<td align="center" valign="middle" width="30">
<?php
if ($erreur_champ1) {
echo($icone);
}
?>
</td>
<td><input name="champ1" type="text" value="<?=stripslashes($_SESSION['champ1']);?>"></td>
</tr></table><table width="566" border="0" align="center"><tr>
<td width="140"><div align="right"><font face="Verdana" size="2">Votre Prenom : </font></div></td>
<td align="center" valign="middle" width="30">
<?php
if ($erreur_champ2) {
echo($icone);
}
?>
</td>
<td><input name="champ2" type="text" value="<?=stripslashes($_SESSION['champ2']);?>"></td>
</tr></table><table width="566" border="0" align="center"><tr>
<td width="140"><div align="right"><font face="Verdana" size="2">Votre adresse E-Mail :</font></div></td>
<td width="30" align="center" valign="middle">
<?php
if ($erreur_email1) {
echo($icone);
}
?>
</td>
<td><input name="zone_email1" type="text" value="<?=stripslashes($_SESSION['zone_email1']);?>"></td>
</tr></table><table width="566" border="0" align="center"><tr>
<td width="140" valign="top"><div align="right"><font face="Verdana" size="2">Votre message : </font></div></td>
<td width="30" align="center" valign="top">
<?php
if ($erreur_texte1) {
echo($icone);
}
?>
</td>
<td><textarea name="zone_texte1" cols="45" rows="10"><?=stripslashes($_SESSION['zone_texte1']);?></textarea></td>
</tr></table><table width="566" border="0" align="center"><tr>
<td valign="top"><div align="center">
<input type="reset" name="Reset" value=" Effacer ">

<input type="submit" name="envoi" value="Envoyer">
</div></td></tr></table><div align="center"><input name="nbre_fichiers" type="hidden" id="nbre_fichiers" value=""></div></form>


Merci Beaucoup
Ethan014

ViPHP
ViPHP | 1996 Messages

23 juin 2010, 21:48

Bien déjà édite ton message et utilises le balises
 ou encore [HTML]pour qu'on y voit plus clair.
Sinon ta page d'erreur elle s'appelle comment ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 27 Messages

24 juin 2010, 09:00

Salut ! Deja merci pour ta reponse ensuite pour l'edition de mon post je n'arrive pas mettre les balises et pour la page afficher apres l'envoi du formulaire c'est une page blanche avec ecrit sa :


Warning: session_start() [function.session-start]: open(/mnt/169/sda/0/8/jegagnefacile/sessions/sess_c1efebf9eb52d0882e8bd37cd7c73254, O_RDWR) failed: No such file or directory (2) in /mnt/169/sda/0/8/jegagnefacile/concours2.php on line 17

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/169/sda/0/8/jegagnefacile/concours2.php:2) in /mnt/169/sda/0/8/jegagnefacile/concours2.php on line 17

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/169/sda/0/8/jegagnefacile/concours2.php:2) in /mnt/169/sda/0/8/jegagnefacile/concours2.php on line 17

Warning: Cannot modify header information - headers already sent by (output started at /mnt/169/sda/0/8/jegagnefacile/concours2.php:2) in /mnt/169/sda/0/8/jegagnefacile/concours2.php on line 78

Warning: Unknown(): open(/mnt/169/sda/0/8/jegagnefacile/sessions/sess_c1efebf9eb52d0882e8bd37cd7c73254, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/mnt/169/sda/0/8/jegagnefacile/sessions) in Unknown on line 0

ViPHP
ViPHP | 5462 Messages

24 juin 2010, 10:16

t'es chez free ?

Eléphanteau du PHP | 27 Messages

24 juin 2010, 11:07

Oui pk ?

ViPHP
ViPHP | 5462 Messages

24 juin 2010, 11:10

Oui pk ?
t'as bien créer un dossier "sessions" a la racine du dossier ?

Eléphanteau du PHP | 27 Messages

24 juin 2010, 11:26

Euh... Non :$ Ou je dois crée ce dossier? et qu'est-ce que je doit mettre dedans ? :$

ViPHP
ViPHP | 5462 Messages

24 juin 2010, 11:27

Euh... Non :$ Ou je dois crée ce dossier? et qu'est-ce que je doit mettre dedans ? :$
créer juste un dossier nommer "session" a la racine de ton site

Eléphanteau du PHP | 27 Messages

24 juin 2010, 11:31

Sans "s" a la fin? ou avec un "s"?

ViPHP
ViPHP | 5462 Messages

24 juin 2010, 11:32

Sans "s" a la fin? ou avec un "s"?
avec un S "sessions" :wink:

Eléphanteau du PHP | 27 Messages

24 juin 2010, 11:33

C'est normale qu'il soit vide?

ViPHP
ViPHP | 5462 Messages

24 juin 2010, 11:35

C'est normale qu'il soit vide?
oui, il va se remplir et se vider apres, c'est la que les fichiers de session iront

Eléphanteau du PHP | 27 Messages

24 juin 2010, 11:37

Salut déja merci beaucoup pour ta réponse mais il y a toujours un message d'erreur mais cette fois moins long comme meme :) QUE 3 WARNING ^^


Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/169/sda/0/8/jegagnefacile/concours2.php:2) in /mnt/169/sda/0/8/jegagnefacile/concours2.php on line 17

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/169/sda/0/8/jegagnefacile/concours2.php:2) in /mnt/169/sda/0/8/jegagnefacile/concours2.php on line 17

Warning: Cannot modify header information - headers already sent by (output started at /mnt/169/sda/0/8/jegagnefacile/concours2.php:2) in /mnt/169/sda/0/8/jegagnefacile/concours2.php on line 78

Eléphanteau du PHP | 27 Messages

24 juin 2010, 11:46

Personne n'a une petite idée?

ViPHP
ViPHP | 5462 Messages

24 juin 2010, 11:51

Personne n'a une petite idée?
si tu fais des include ou des require t'as peu etre un autre session_start() qui traine, verfie aussi que y'a rien qui s'affiche avant le session_start()

exemple

pas bon
<html>
<body>
<?php
    session_start();
bon
<?php
    session_start();
?>
<html>
<body>
:wink: