8791 sujets

Développement web côté serveur, CMS

Bonjours à tous
alors voila j'ai créer un formulaire en php et lorsque je fais envoi cela fonctionne:
hors:
-le message s'envoi même lorsque des champs son vides alors que je les est paramétrer afin qu'ils renvoi une erreur lorsque un champs obligatoires n'est pas renseigné.
-lorsque je rentre tous les champs le mail reçu ne comporte rien.

voici le code :
<?php include "../inc/header.inc.php";?>	<!-include du header->
		
<?php include "../inc/nav.inc.php";?>	<!-include de la nav->

<?php
	$erreur ="";
	$felicitation ="";
	
if(!empty($_POST)){
	extract($_POST);
	$valid=true;
		if(empty($nom)){
			$valid=false;
			$erreurnom="Vous n'avez pas rempli le champ nom";	
		}
		
	//condition pour verifier si le champs mail correspond bien à un e-mail
if(!preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i",$mail)){
	$valid=false;
	$erreurmail ="votre email n'est pas valide";
}
if(empty($mail)){
	$valid=false;
		$erreurmail="Vous n'avez pas rempli votre adresse E-mail";	
	}

if(empty($prenom)){
	$valid=false;
		$erreurprenom="Vous n'avez pas rempli le champ prenom";	
	}

if(empty($message)){
	$valid=false;
		$erreurmessage="Vous n'avez pas rempli le champ message";	
	}
	if($valid=true){
		$to="adrienkouyate@hotmail.fr";
		$sujet= $nom."a contacté le site";
		$header ="From: $nom <$mail>";
			if(mail($to,$sujet,$header)){
				$felicitation="Votre message nous ai bien parvenu";
				unset($nom);
				unset($prenom);
				unset($sujet);
				unset($mail);
				unset($message);
			}
			else{
				$erreur ="Une erreur est survenue et votre mail n'a pas était envoyé";
			}
	}
}

?>
	
<div id="contenue">
	<section class="contact">
		<header>
			<h1>Formulaire de contact</h1>
		</header>	
	
	<?php
		if($erreur!=""){echo $erreur;}
		if($felicitation!=""){echo $felicitation;}
	?>
		<form method="Post">
			<label for="nom">Nom :*</label>
			<input type="text" name="nom" id="nom" value="<?php if(isset($nom)) echo $nom; ?>" />
            <span class="error_message"><?php if(isset($erreurprenom))echo $erreurnom ?></span>
		<br />
			<label for="prenom">Prenom :*</label>
			<input type="text" name="prenom" id="prenom" value="<?php if(isset($prenom)) echo $prenom; ?>" />
              <span class="error_message"><?php if(isset($erreurprenom))echo $erreurprenom ?></span>
		<br />
			<label for="sujet">Sujet :</label>
			<input type="text" name="sujet" id="sujet" value="<?php if(isset($sujet)) echo $sujet; ?>" />
		<br />
			<label for="mail">Adresse mail *</label>
			<input type="text" name="mail" id="mail" value="<?php if(isset($mail)) echo $mail; ?>" />
             <span class="error_message"><?php if(isset($erreurmail))echo $erreurmail ?></span>
		<br />
			<textarea id="texte"></textarea>
		<br/>
		<input type="submit" name="envoyer" value="envoyer"/>
		</form>
	</section><!-Fin de section contact->
</div><!-fin de div contenue->

<?php include "../inc/footer.inc.php"; ?><!-include du footer->

Modifié par adrien37300 (27 Jun 2012 - 14:39)
adrien37300 a écrit :

-le message s'envoi même lorsque des champs son vides alors que je les est paramétrer afin qu'ils renvoi une erreur lorsque un champs obligatoires n'est pas renseigné.



if($valid=true)



if($valid==true)


ou



if($valid)


adrien37300 a écrit :

-lorsque je rentre tous les champs le mail reçu ne comporte rien.



mail($to,$sujet,$header)


La question est, pourquoi devrait il contenir quelque chose? vu que tu ne lui passe pas de corps et pire, tu lui passe le header a la place...

Voir la fonction mail() en PHP
Modifié par JJK801 (27 Jun 2012 - 14:11)
bonjour jjk801 merci de ta réponse est de tes informations

voici le code rectifié
if($valid==true){
		$to      = 'adrienkouyate@hotmail.fr';
		$subject = $sujet;
		$message = $message;
		$headers = 'From: <$nom $prenom>';

     mail($to, $subject, $message, $headers);
			}
			else{
				$erreur ="Une erreur est survenue et votre mail n'a pas était envoyé";
			}
	}


dit moi si j'ai commis une erreur le seul souci que j'ai maintenant c'est que l'email ne s'envoi pas et que mon $erreur s'active
Modifié par adrien37300 (27 Jun 2012 - 14:21)
rectification sa fonctionne je n'avais pas regardé dans mes spams ^^ je te remercie vraiment de ton aide, comme quoi il s'agit de pas grand chose, comme quoi!
Voici le code qui fonctionne pour se qui souhaite un script de formulaire (attention il n'est pas sans fail)
<?php include "../inc/header.inc.php";?>	<!-include du header->
		
<?php include "../inc/nav.inc.php";?>	<!-include de la nav->

<?php
	$erreur ="";
	$ok ="";
	$message="";
	
if(!empty($_POST)){
	extract($_POST);
	$valid=true;
		if(empty($nom)){
			$valid=false;
			$erreurnom="Vous n'avez pas rempli le champ nom";	
		}
		
	//condition pour verifier si le champs mail correspond bien à un e-mail
if(!preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i",$mail)){
	$valid=false;
	$erreurmail ="votre email n'est pas valide";
}
if(empty($mail)){
	$valid=false;
		$erreurmail="Vous n'avez pas rempli votre adresse E-mail";	
	}

if(empty($prenom)){
	$valid=false;
		$erreurprenom="Vous n'avez pas rempli le champ prenom";	
	}

if(empty($message)){
	$valid=false;
		$erreurmessage="Vous n'avez pas rempli le champ message";	
	}
	if($valid==true){
		$to      = 'adrienkouyate@hotmail.fr';
		$subject = $sujet ;
		$message = $message;
		$headers = 'From: ' . $nom . ' ' . $prenom . ' <' . $mail . '>' . "\n";
		$ok="Votre message a bien était envoyer";

     mail($to, $subject, $message, $headers);
			}
			else{
				$erreur ="Une erreur est survenue et votre mail n'a pas était envoyé";
			}
	}


?>
	
<div id="contenue">
	<section class="contact">
		<header>
			<h1>Formulaire de contact</h1>
		</header>	
	
	<?php
		if($erreur!=""){echo $erreur;}
		if($ok!=""){echo $ok;}
	?>
		<form method="Post">
			<label for="nom">Nom :*</label>
			<input type="text" name="nom" id="nom" value="<?php if(isset($nom)) echo $nom; ?>" />
            <span class="error_message"><?php if(isset($erreurnom))echo $erreurnom ?></span>
		<br />
			<label for="prenom">Prenom :*</label>
			<input type="text" name="prenom" id="prenom" value="<?php if(isset($prenom)) echo $prenom; ?>" />
              <span class="error_message"><?php if(isset($erreurprenom))echo $erreurprenom ?></span>
		<br />
			<label for="sujet">Sujet :</label>
			<input type="text" name="sujet" id="sujet" value="<?php if(isset($sujet)) echo $sujet; ?>" />
		<br />
			<label for="mail">Adresse mail *</label>
			<input type="text" name="mail" id="mail" value="<?php if(isset($mail)) echo $mail; ?>" />
             <span class="error_message"><?php if(isset($erreurmail))echo $erreurmail ?></span>
		<br />
			<textarea id="texte" name="message"></textarea>
		<br/>
		<input type="submit" name="envoyer" value="envoyer"/>
		</form>
	</section><!-Fin de section contact->
</div><!-fin de div contenue->

<?php include "../inc/footer.inc.php"; ?><!-include du footer->

Modifié par adrien37300 (27 Jun 2012 - 14:50)
jb_gfx a écrit :
Dans ton header From tu mets le nom mais tu as oublié l'email de l'expediteur.


Bien vu l'aveugle Smiley langue
Arff décidément le souci c'est que quand je renseigne
$headers = 'from: $nom $prenom $mail';


sa me mais le texte en brut et non pas le contenue de mon champ nom ou prénom ou mail, dsl des mes lacunes j'apprend Smiley langue
Seigneur la concaténation Smiley sweatdrop sorrry il faut vraiment que je me cache Smiley biggol
En tout cas je vous remercie vraiment a vous deux à bientôt
très bien merci de l'info je vais me la sculpter dans la tête,

Je me permet une question? je suis donc débutant en PHP et l'an prochain je rentre dans une école afin dy préparer une licence developpeur WEB certifié zen mysql tu as mis combien de temps pour acquérir de l'ésance sur le language
Modifié par adrien37300 (27 Jun 2012 - 15:02)
Salut,

Pour ma part je suis 100% autodidacte, j'ai commencé y a une dizaine d'années.

Pour acquérir un bon niveau général en développement il faut compter 2 ou 3 ans, l'expérience professionnelle fait le reste.

Par contre, je me permet de te déconseiller les formation "certifié Zend" et compagnie, c'est pas la meilleure voie a suivre car les programmes sont orientés framework, mieu vaut commencer par les bases et acquérir de vrais compétences. (ce que tu peut faire gratuitement sur le net avec tutos et forums), et pour valider tes compétences, tu trouve des contrats pros sur 12 mois avec un rythme de 3 semaine d'entreprise / 1 semaine de cours par mois, et qui sont bien plus généralistes que celle ci.
Modifié par JJK801 (27 Jun 2012 - 15:08)
parfait tu as donc déjà une bonne expérience derrière toi, je te remercie de tes conseils a propos des formations. la formation que je commence précisément le 22 octobre prochain et une formation en contrat de professionnalisation, 3 semaines en entreprise et 1 semaine en centre comme tu me la indiqué.
sa me rassure donc de savoir que c'est la bonne voie,

Bien sur sa ne m'empêche en rien de booster mon apprentissage à l'aide de la communauté internet.

En tout cas mille fois merci pour ton aide
Modifié par adrien37300 (27 Jun 2012 - 15:18)