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

Eléphanteau du PHP | 12 Messages

02 avr. 2010, 22:04

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

Mammouth du PHP | 661 Messages

02 avr. 2010, 22:35

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é ^^)

Eléphanteau du PHP | 12 Messages

02 avr. 2010, 22:39

mais que me conseilles tu
je suis debutant

Eléphanteau du PHP | 12 Messages

02 avr. 2010, 22:47

sais tu ce que je dois changer dans les codes

ViPHP
ViPHP | 2287 Messages

03 avr. 2010, 01:40

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 ).
if(!@work()){ Nespresso(); } else { what(); }
______________________________

devlop78
Invité n'ayant pas de compte PHPfrance

03 avr. 2010, 19:25

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++;).

Eléphant du PHP | 428 Messages

03 avr. 2010, 19:50

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

Eléphanteau du PHP | 12 Messages

05 avr. 2010, 14:48

je vais tester vos solutions puis je vous reponds merci !!!

ViPHP
AB
ViPHP | 5818 Messages

05 avr. 2010, 16:52

Et puis prends l'habitude de mettre exit derrière un header-Location :
header("Location: http://www.marinelepetit.com/remerciement.php");
exit;