Page 1 sur 1

problême de lein entre page.php et formmail.php

Posté : 02 avr. 2010, 22:04
par xeradou
bonsoir à tous !!

voila mon problême :
ma page de remerciement aprés l'envoi d'un mail ne fonctionne pas. je reçois bien mon mail, mais la page reste bloqué sur une page blanche correspondante au script formmail.php qui devrait redirigé sur la page remerciement.php....
voici le lien de mon site en construction en ligne, essayez le formulaire contact pour voir le problême...http://www.marinelepetit.com/contact.php

je vous place aussi les trois dossiers correspondant au formulaire :

1) la page contact :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>www.marinelepetit.com</title>
<link href="style.css" rel="stylesheet" type="text/css" />

</head>

<body>		
		
	<div id="body2">

<?php include("header.php"); ?>

<?php include("menu.php"); ?>


<br><br><br>
<table class="tb-contact-global">
    <tr>
    <td class="td-global">
	<a href="cv.php"><img src="images/cv-bouton.png"></a>
    </td>
    </tr>
    </table>
	<br><br>
<table class="tb-contact-global">
<tr>
<td class="td-contact-global">
  <div id="formulaire">

	

	<p>Write in the form to send a e-mail : </p>
	<br>

	<form action="formmail.php" method=post enctype="multipart/form-data">
	<input type=hidden name=subject value=formmail>
	
	<table>
	
	<tr>
	<td>Name :</td>
	<td><input type="text" name="nom" id="nom"></td>
	</tr>
	<tr>
	<td>Surname :</td>
	<td><input type= "text" name="prenom" id="prenom"></td>
	</tr>
	<tr>
	<td>E-mail :</td>
	<td><input type= "text" name="e-mail" id="e-mail"></td>
	</tr>
	<tr>
	<td>company :</td>
	<td><input type="text" name="societe" id="societe"></td>
	</tr>
	
	
	</table>
	
	<br><br>
	
	preliminary estimate : <input type="checkbox" name="demandededevis" id="demandededevis">
	<br><br>
	<label>Choose your themes : </label>
	<select>
			<option>report</option>
			<option>artwork</option>
			<option>model</option>
			<option>customer relationship</option>
			<option>exhibition</option>
			<option>private</option>
			
		</select>
	<br><br>
	Text : <textarea rows="6" cols="30" name="texte" id="texte"> </textarea> 
	<br><br>
	
    <input type="image" src="images/bouton-formulaire-contact.png" value=Envoyer>
         
         </div> 
	 
	</form>
	</td>
	<td class="td-carte-de-viste-contact-dans-cellule">
	<img src="images/IMG_5747-copie-copie.jpg" class="image-contact"/>
	</td>
	</tr>
	</table>
	<br><br>
	
    <?php include("footer.php"); ?>

</div>

</body>
</html>
viens ensuite le script php :"formmail.php" qui doit rediriger vers la page remerciement.php:
<?php
$TO = "[email protected]";

$h  = "From: " . $TO;

$message = "";

while (list($key, $val) = each($HTTP_POST_VARS)) {
  $message .= "$key : $val\n";
}



mail($TO, $subject, $message, $h);

Header("Location: http://www.marinelepetit.com/remerciement.php");

?>
puis pour finir la page remerciement.php qui devrait normalement être affiché via le script php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>www.marinelepetit.com</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="body2">

    <?php include("header.php");?>
	
    <?php include("menu.php");?>
	
<br><br>	
<table class="tb-remerciement-global">
<tr>
<td class="td-remerciement-global">
<p>Merci, votre message a bien ete envoye.</p>
</td>
</tr>

<tr>
<td class="td-remerciement-global">
<a href="acceuil.php"><img src="images/bouton-remerciement.png" alt="clic"/></a>
</td>
</tr>
</table>
<br><br>	

<?php include("footer.php"); ?>

</div><!-- fin body2 -->

</body>
</html>

 

toute mes pages se situent à la racine du site et donc pas de problême de repertoire...

voila je vous remercie de m'aider car je ne comprends pas d'ou vient le truc....
merci

Re: problême de lein entre page.php et formmail.php

Posté : 02 avr. 2010, 22:35
par Nours312
salut !

tu as un pb d'encodage ... et/ou un espace html qui se profile !...

ce qui fait que le header() ne peux fonctionner vu que quelque chose à été envoyé au navigateur ... ça crée une erreur .. qui ne s'affiche pas du fait que le report des erreur est désactivé sur ton serveur ^^

durant les développement, il est préférable de les activer :: http://www.manuelphp.com/php/function.e ... orting.php

@++ (et désolé pour le mail envoyé ^^)

Re: problême de lein entre page.php et formmail.php

Posté : 02 avr. 2010, 22:39
par xeradou
mais que me conseilles tu
je suis debutant

Re: problême de lein entre page.php et formmail.php

Posté : 02 avr. 2010, 22:47
par xeradou
sais tu ce que je dois changer dans les codes

Re: problême de lein entre page.php et formmail.php

Posté : 03 avr. 2010, 01:40
par Calimero
Bonjour,

Tu peux commencer par remplacer (dans formmail.php) $HTTP_POST_VARS par $_POST car cette syntaxe est très ancienne et obsolète (et peut-être même la cause du problème).

Si ça ne change rien il va falloir débugguer (en suivant la piste donnée par Nours, ou mieux encore en installant ton site sur un serveur de développement, du type wampserver si tu es sous windows ).

Re: problême de lein entre page.php et formmail.php

Posté : 03 avr. 2010, 19:25
par devlop78
Franchement, je vois pas ce qui cloche.

Mais sûr, La variable POST actuelle est obsolète voire vide selon ton serveur. Si tu la remplaces par $_POST, ça devrait aller

Ensuite, écris header() plutôt que Header, on sait jamais ... php n'est pas ultra case-sensitif mais bon un peu quand même.

Ensuite, rajoute un error_reporting(E_ALL) en début de code et un Display_error(1); (vérifie les syntaxes avant je suis pas sûr).

Tu peux aussi mettre des echo à chaque ligne pour voir où est-ce que le script plante (le plus simple echo $ii++;).

Re: problême de lein entre page.php et formmail.php

Posté : 03 avr. 2010, 19:50
par visualight
Salut,

Il faudrait également sécuriser un tantinet tout cela car si les champs sont vide et que j'appuie sur le bouton Envoyer l'email part !
Il faut au moins que tu contrôle tes variables POST au sein du formail.php

Du style :
<?php
if ((isset($_POST['nom']) && !empty($_POST['nom'])) AND (isset($_POST['prenom']) && !empty($_POST['prenom'])) AND (isset($_POST['e-mail']) && !empty($_POST['e-mail'])) AND (isset($_POST['societe']) && !empty($_POST['societe']))) {

$TO = "[email protected]";

$h  = "From: " . $TO;

$message = "";

while (list($key, $val) = each($HTTP_POST_VARS)) {
  $message .= "$key : $val\n";
}



mail($TO, $subject, $message, $h);

Header("Location: http://www.marinelepetit.com/remerciement.php");

} else {
 echo 'L\'email n\'a pas été envoyé car les champs suivants sont requis : nom, prenom, e-mail, societe';
}

?>

Après ça tu peux aussi installer un systeme captcha (antispam brute force) comme securimages :
http://www.phpcaptcha.org/

Et puis, il y a cet article qui parle du probleme d'injections :
http://www.phpsecure.info/v2/article/Ma ... Inject.php

A+
raph

Re: problême de lein entre page.php et formmail.php

Posté : 05 avr. 2010, 14:48
par xeradou
je vais tester vos solutions puis je vous reponds merci !!!

Re: problême de lein entre page.php et formmail.php

Posté : 05 avr. 2010, 16:52
par AB
Et puis prends l'habitude de mettre exit derrière un header-Location :
header("Location: http://www.marinelepetit.com/remerciement.php");
exit;