[RESOLU] Page blanche formulaire contact PHP

Petit nouveau ! | 7 Messages

15 nov. 2016, 19:45

Chers amis de la communauté,

Je vous écris aujourd'hui car j'expérimente actuellement l'épreuve la plus durs de ma jeune carrière de codeur. J'ai un problème avec un formulaire contact qui ne s'execute pas. C'est à vrai dire un problème récurrent que je n'arrive pas à solutionner malgré les forums, les tutos, les formations.

Voici le code en question en HTML:
<section class="6u 12u(narrower)">
								<form method="POST" action="form.php">
									<div class="row 50%">
									  <div class="6u 12u(mobile)">
											<input name="name" placeholder="Nom" type="text" />
										</div>
										<div class="6u 12u(mobile)">
											<input name="email" placeholder="Email" type="text" />
									  </div>
                                    <div class="6u 12u(mobile)">
											<input name="human" placeholder="Anti-spam 2+2 = ?" type="text" />
									  </div>
									</div>
									<div class="row 50%">
										<div class="12u">
											<textarea name="message" placeholder="Message"></textarea>
										</div>
									</div>
									<div class="row 50%">
										<div class="12u">
											<ul class="actions">
												<li><input type="submit" value="Envoyer" /></li>
												<li><input type="reset" value="Effacer" /></li>
											</ul>
										</div>
									</div>
								</form>
							</section>

Et Voici mon code PHP
<?php
	
			$name = $_POST['name'];
	$email = $_POST['email'];
	$message = $_POST['message'];
	$from = 'De: Demande Site Web';
	$to = '[email protected]';
	$subject = 'Bonjour';
	
	$body = 'De: $name\n E-mail: $email\n Message:\n $message';
	
	
	if ($_POST['submit']){
		
		if ($name != '' && $email != ''){
	
	 if ($human == '4') {
		if (mail ($to, $subject, $body, $from)) {
			echo '<p>Votre message a été envoyé</p>';
		}	else {
				echo '<p>Une erreur a été détecté</p>';
		}
	}
			
	else if ($_POST['submit'] && $human != '4') {
		echo '<p>Votre réponse anti-spam est fausse</p>';
	}
	
	else {
		echo '<p>Vous devez remplir les champs demandés</p>';
	}
		}
	}
	  
?>
Le résultat, lorsque je clique sur le bouton submit de mon formulaire j'obtiens une page blanche le code ne s'execute pas. J'ai essayé de chercher les erreurs éventuelles mais je n'en trouve pas. J'ai placé ma page index.html et ma page form.php dans le même dossier dans mon dossier racine public_HTML.

Merci d'avance pour votre aide.

Cordialement,
Joe

Mammouth du PHP | 2703 Messages

15 nov. 2016, 20:02

<li><input type="submit" value="Envoyer" /></li>
if ($_POST['submit']){
aucun champ n'a comme valeur "submit", c'est donc normal d'avoir une page blanche.

Petit nouveau ! | 7 Messages

15 nov. 2016, 20:21

Bonjour,

Merci de ta réponse rapide effectivement j'avais oublié d'ajouter <li><input type="submit" name="submit" value="Envoyer" /></li>

Même en rajoutant cela j'obtiens toujours la même page blanche. Même en laissant le formulaire vierge je ne vois même pas de message d'erreur.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

15 nov. 2016, 23:08

Bonjour,

Si tu as une page parfaitement blanche et que même en ajoutant un echo "test" au début de ta page, rien ne s'affiche, c'est que tu as une erreur PHP et que l'affichage des erreurs est désactivé sur ton serveur.

On a un tuto pour ça ici :
faq-tutoriels/page-blanche-script-php-c ... 73178.html
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 7 Messages

16 nov. 2016, 02:17

Merci de ta réponse. J'ai essayé de faire un test echo je le vois. Par contre à partir du moment où j'insere mes variables et les conditions rien ne marche.

Mammouth du PHP | 1967 Messages

16 nov. 2016, 09:25

Indente correctement ton code, uil me semble qu'il y a une } de trop donc une erreur de php

vérifie avec le lien d'@rthur si l'affichage des erreurs est bien activé
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Petit nouveau ! | 7 Messages

16 nov. 2016, 10:32

J'utilise dreamweaver pour coder mon php si je rajoute une acollade en trop une erreur survient. Or le code que j'ai présenté ci-dessous n'affiche aucune erreur. J'ai également testé le code sur des sites de vérification aucune erreur à signalé dans le code.

Mammouth du PHP | 1967 Messages

16 nov. 2016, 11:56

Oui les { et } sont bien par paire, mais il y a un manque de logique dans tes conditions qui avait abusé ma vue. Une indentation correcte aiderait à la mettre en lumière. Tu n'aura jamais le message "Vous devez remplir les champs demandés"

Donc une page blanche signifie peut être que ta 2ème condition n'est pas remplie
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Petit nouveau ! | 7 Messages

17 nov. 2016, 18:53

Merci pour vos réponses. J'ai bien entendu essayé de garder une certaine logique dans mon indentation. Je ne vois pas ou est l'erreur si il y a erreur. Quelqu'un voit quelque chose ?

Mammouth du PHP | 1967 Messages

18 nov. 2016, 00:48

if ($_POST['submit']){
	if ($name != '' && $email != ''){
		if ($human == '4') {
			if (mail ($to, $subject, $body, $from)) {
				echo '<p>Votre message a été envoyé</p>';
			}
			else {
				echo '<p>Une erreur a été détecté</p>';
			}
		}
		else if ($_POST['submit'] && $human != '4') {
			echo '<p>Votre réponse anti-spam est fausse</p>';
		}
		else {
			echo '<p>Vous devez remplir les champs demandés</p>';
		}
	}
}
on voit bien que si $name ou $email est vide, il ne se passera rien
mais si $name et $email est plein, que $human soit 4 ou pas on arrivera jamais à echo '<p>Vous devez remplir les champs demandés</p>';
Si $human est 4 on traite les donnée
si $human est différent de 4 (car $_POST['submit'] est forcement vrai, il est testé 2 condition avant) message echo '<p>Votre réponse anti-spam est fausse</p>';

donc il faut plutot faire ceci
if ($_POST['submit']){
	if ($name != '' && $email != ''){
		if ($human == '4') {
			if (mail ($to, $subject, $body, $from)) {
				echo '<p>Votre message a été envoyé</p>';
			}
			else {
				echo '<p>Une erreur a été détecté</p>';
			}
		}
		else {
			echo '<p>Votre réponse anti-spam est fausse</p>';
		}
	}
	else {
		echo '<p>Vous devez remplir les champs demandés</p>';
	}
}
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Petit nouveau ! | 7 Messages

18 nov. 2016, 18:53

Super merci pour ta réponse. Le PHP s'exécute à présent, lorsque je test le formulaire si je ne remplis pas un champs le message d'erreur vous devez remplir tous les champs apparait jusqu'ici tout vas bien par contre il y a un problème avec la condition anti-spam même si j'entre la réponse 4 j'ai le message d'erreur qui apparait votre réponse anti-spam est fausse.

Mammouth du PHP | 2703 Messages

18 nov. 2016, 18:55

$human n'est jamais initialisée, ne peut donc pas avoir la valeur attendue.

Petit nouveau ! | 7 Messages

19 nov. 2016, 03:24

Merci la communauté, tout fonctionne parfaitement. J'ai appris de mes deux trois petites erreurs merci encore