Rechercher : dans
Par :

Problème redirection formulaire mail php

Dernière réponse le 24 mar 2009 à 20:57:57 zozo, le 24 mar 2009 à 19:06:58 
 Signaler ce message aux modérateurs

Bonjour,
J'ai un problème au niveau de la redirection après l'envoi d'un mail par formulaire php.

J'ai deux sites et mis les mêmes pages avec les même codes dessus. L'un sur toile-libre.org fonctionne parfaitement et m'affiche le page merci.html disant que le messagea bien été envoyé , et l'autre sur free.fr affiche le formulaire php, envoi bien le formulaire à l'adresse mail voulue mais affiche le code d'erreur suivant :

Warning: session_start() [function.session-start]: open(/mnt/101/sda/2/8/asstrafer/sessions/sess_6875f7285c24d2­8c3ae6b6cb63d7468a, O_RDWR) failed: No such file or directory (2) in /mnt/101/sda/2/8/asstrafer/iframe1/envoi.php on line 16

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/101/sda/2/8/asstrafer/iframe1/envoi.php:16) in /mnt/101/sda/2/8/asstrafer/iframe1/envoi.php on line 16

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/101/sda/2/8/asstrafer/iframe1/envoi.php:16) in /mnt/101/sda/2/8/asstrafer/iframe1/envoi.php on line 16

Warning: Cannot modify header information - headers already sent by (output started at /mnt/101/sda/2/8/asstrafer/iframe1/envoi.php:16) in /mnt/101/sda/2/8/asstrafer/iframe1/envoi.php on line 79

Warning: Unknown(): open(/mnt/101/sda/2/8/asstrafer/sessions/sess_6875f7285c24d2­8c3ae6b6cb63d7468a, 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/101/sda/2/8/asstrafer/sessions) in Unknown on line 0

Le formulaire se compose de deux pages envoi.php et merci.html
Vous pouvez essayer ici : http://asstrafer.free.fr/iframe1/envoi.php

voilà le code de la page :

<?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'];
$_SESSION['liste1'] = $_POST['liste1'];

//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 = "asstrafer@live.fr";
$sujet = "Mail du Site Asstrafer";
$entetes ="MIME-Version: 1.0 \n";
$entetes .="From: Site Asstrafer<asstrafer@free.fr>\n";
$entetes .="Return-Path: Site Asstrafer<asstrafer@free.fr>\n";
$entetes .="Reply-To: Site Asstrafer<asstrafer@free.fr>\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 Prenom : = " . $_SESSION['champ1'] . "</font><br>\n";
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Votre Nom : = " . $_SESSION['champ2'] . "</font><br>\n";
$partie_zone_email .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Votre e-mail : = " . $_SESSION['zone_email1'] . "</font><br>\n";
$partie_listes .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Objet du message : = " . $_SESSION['liste1'] . "</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 = "




<!-- RankSpirit Code //-->
<script language="JavaScript1.1" type="text/javascript">
<!--
LRef = document.referrer; LDate = new Date();
LConc = '<img width="0" height="0" border="0" src="../log.php?&hl='+LDate.getHours()+'x'+LDate.getMinutes()+'x'+LDate.getSeconds();
if(parseFloat(navigator.appVersion)>=4)
{LScreen=screen;LConc +='&r=' + LScreen.width + 'x' + LScreen.height + 'x' + LScreen.pixelDepth + 'x' + LScreen.colorDepth;}
document.write(LConc + '&ref=' + LRef.replace(/[<>"]/g, '').replace(/&/g, '$') + '"Zapman">');
//-->
</script>
<!-- End of RankSpirit Code //-->

</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:merci.html");
exit();
} // Fin else
} // Fin du if ($flag_erreur == 0) {
} // Fin de if POST
?>
<html>
<!--
Assistant de création de formulaires PHP pour les nuls - Version gratuite 1.6
Auteur : Frédéric Ménard (assistant@f1-fantasy.net)
Site : http://www.f1-fantasy.net/assistant
-->
<head>
<title>Formulaire</title><script language="JavaScript">


function verifSelection() {


if (document.mail_form.zone_email1.value == "") {
alert("Veuillez saisir votre e-mail.")
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.liste1.value == "") {
alert("Veuillez sélectionner l\'objet de votre demande.")
return false
}

if (document.mail_form.zone_texte1.value == "") {
alert("Veuillez laissez un message.")
return false
}

} // Fin de la fonction
</script>
</head><body><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>Nous contacter par mail</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_liste1) {
echo(stripslashes($erreur_liste1));
} else {
if ($erreur_texte1) {
echo(stripslashes($erreur_texte1));
} else {
} // Fin du 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">Prenom :</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">Nom :</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">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"><div align="right"><font face="Verdana" size="2">Objet du message* :</font></div></td>
<td width="30" align="center" valign="middle">
<?php
if ($erreur_liste1) {
echo($icone);
}
?>
</td>
<td><select name="liste1" style="width:146"><option value="">Sélectionner...</option>
<option value="renseignement"<?php
if ($_SESSION['liste1'] == "renseignement") {
echo(" selected");
}
?>>renseignement</option>
<option value="avis"<?php
if ($_SESSION['liste1'] == "avis") {
echo(" selected");
}
?>>avis</option>
<option value="réservation"<?php
if ($_SESSION['liste1'] == "réservation") {
echo(" selected");
}
?>>réservation</option>
<option value="autre demande"<?php
if ($_SESSION['liste1'] == "autre demande") {
echo(" selected");
}
?>>autre demande</option>
</select></td></tr></table><table width="566" border="0" align="center"><tr>
<td width="140" valign="top"><div align="right"><font face="Verdana" size="2">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>
<p><center> * Saisie obligatoire </center>





<!-- RankSpirit Code //-->
<script language="JavaScript1.1" type="text/javascript">
<!--
LRef = document.referrer; LDate = new Date();
LConc = '<img width="0" height="0" border="0" src="../log.php?&hl='+LDate.getHours()+'x'+LDate.getMinutes()+'x'+LDate.getSeconds();
if(parseFloat(navigator.appVersion)>=4)
{LScreen=screen;LConc +='&r=' + LScreen.width + 'x' + LScreen.height + 'x' + LScreen.pixelDepth + 'x' + LScreen.colorDepth;}
document.write(LConc + '&ref=' + LRef.replace(/[<>"]/g, '').replace(/&/g, '$') + '"Zapman">');
//-->
</script>
<!-- End of RankSpirit Code //-->

</body>
</html>

Configuration: Windows Vista
Internet Explorer 7.0

Meilleures réponses pour « problème redirection formulaire mail php » dans :
[Webmaster] Un formulaire de contact pour votre site VoirCe formulaire permet d'avoir une page pour être contacté sur son site, sans utiliser de logiciel de messagerie. La personne qui vous contacte indique son adresse, l'objet du message et son message (évidemment). Le code est une version...
[PHP] Fonction mail() VoirLa fonction mail() est bloquée chez certains des hébergeurs gratuits pour des raisons de sécurité (afin d'éviter le spam notamment), l'adresse ip de la machine qui a demandé le script sera alors indiquée dans le header 'X-MM-Mail-From-IP'. renseignez...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
PHP - Mail et fonctions réseau VoirPHP étant un langage consacré au Web, il possède bien évidemment des fonctions lui permettant de communiquer avec le "monde extérieur" à l'aide de fonctions standards. Le service le plus utilisé sur Internet étant la messagerie électronique, il est...

1

bissdebrazza, le 24 mar 2009 à 19:22:25

Salut!
Je te conseille de mettre

session_start()
au tout début de ton code. «Il faut avoir déjà beaucoup appris de choses pour savoir de­mander ce qu'on ne sait pas.»
Jean-Jacques ROUSSEAU

Répondre à bissdebrazza

2

sonik21, le 24 mar 2009 à 19:23:32

Ouvre ta session (avec session_start() ) tou en haut de ton script, normalement ça fonctionnera ;) JuZa.e3b.org || No man's land, People are strange, & Jesus was a punk ## The Blood's Flowers
#Engraved February#             Sleepwalking Past Hope

Répondre à sonik21

3

zozo, le 24 mar 2009 à 19:28:07

Je vien de rajouter session_start() après la balise <?php
mais maintenant je n'arrive pas au formulaire et j'ai :
Parse error: syntax error, unexpected T_VARIABLE in /mnt/101/sda/2/8/asstrafer/iframe1/envoi.php on line 4

Répondre à zozo

4

sonik21, le 24 mar 2009 à 20:02:50

Tu pourrai reposter les 5-6 premières lignes de ton code avec les modifs apportés ? JuZa.e3b.org || No man's land, People are strange, & Jesus was a punk ## The Blood's Flowers
#Engraved February#             Sleepwalking Past Hope

Répondre à sonik21

5

zozo, le 24 mar 2009 à 20:06:19

<?php
session_start()
// 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'];
$_SESSION['liste1'] = $_POST['liste1'];

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

Répondre à zozo

6

 zozo, le 24 mar 2009 à 20:57:57

En fouillant un peu, j'ai trouvé la base de mon problème :

Chez Free, il faut créer un dossier "sessions" à la racine du FTP dès que l'on a une page php avec "session_start(); "

Donc, le code de ma page d'origine était bonne le session_start au bon endroit. Il me fallait ajouter le dossier session à la racine.

merci encore pour votre aide !

Répondre à zozo