Problème redirection formulaire mail php

[Résolu/Fermé]
Signaler
-
 zozo -
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_6875f7285c24d28c3ae6b6cb63d7468a, 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_6875f7285c24d28c3ae6b6cb63d7468a, 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>

5 réponses

Messages postés
2064
Date d'inscription
vendredi 29 juin 2007
Statut
Contributeur
Dernière intervention
7 décembre 2017
711
Salut!
Je te conseille de mettre
session_start()
au tout début de ton code.

ouvre ta session (avec session_start() ) tou en haut de ton script, normalement ça fonctionnera ;)
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

tu pourrai reposter les 5-6 premières lignes de ton code avec les modifs apportés ?
<?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'];
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 !