Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

FORMULAIRE DE CONTACT MULTICHAMPS


Information sur la source

Catégorie :E-Mail / Messagerie Classé sous : contact, formulaire, complet, simple, commenté Niveau : Initié Date de création : 09/02/2008 Date de mise à jour : 26/02/2008 23:07:35 Vu : 12 095

Note :
Aucune note

Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Un formulaire de contact assez complet avec envoi d'un accusé.

Utile pour un petit site professionnel ou associatif.

En démo ici: http://viki53.free.fr/contact.php

/!\  Ce script sert pour mon site, évitez de l'utiliser abusivement pour ne pas pourrir ma BAL.
 

Source

  • <?php
  • if (isset($_POST["envoyer"])){ // Si le formulaire a &eacute;t&eacute; soumis
  • $etat = "erreur"; // On initialise notre etat &agrave; erreur, il sera chang&eacute; &agrave; "ok" si la v&eacute;rification du formulaire est un succ&egrave;s, sinon il reste &agrave; erreur
  • // On r&eacute;cup&egrave;re les champs du formulaire, et on arrange leur mise en forme
  • if (isset($_POST["titre"])) $_POST["titre"]=trim(stripslashes($_POST["titre"]));
  • if (isset($_POST["nom"])) $_POST["nom"]=trim(stripslashes($_POST["nom"]));
  • if (isset($_POST["prenom"])) $_POST["prenom"]=trim(stripslashes($_POST["prenom"]));
  • if (isset($_POST["email"])) $_POST["email"]=trim(stripslashes($_POST["email"]));
  • if (isset($_POST["url"])) $_POST["url"]=trim(stripslashes($_POST["url"]));
  • if (isset($_POST["pays"])) $_POST["pays"]=trim(stripslashes($_POST["pays"]));
  • if (isset($_POST["adresse"])) $_POST["adresse"]=trim(stripslashes($_POST["adresse"]));
  • if (isset($_POST["code_postal"])) $_POST["code_postal"]=trim(stripslashes($_POST["code_postal"]));
  • if (isset($_POST["ville"])) $_POST["ville"]=trim(stripslashes($_POST["ville"]));
  • if (isset($_POST["telephone"])) $_POST["telephone"]=trim(stripslashes($_POST["telephone"]));
  • if (isset($_POST["objet"])) $_POST["objet"]=trim(stripslashes($_POST["objet"]));
  • if (isset($_POST["priorite"])) $_POST["priorite"]=trim(stripslashes($_POST["priorite"]));
  • if (isset($_POST["message"])) $_POST["message"]=trim(stripslashes($_POST["message"]));
  • // Apr&egrave;s la mise en forme, on v&eacute;rifie la validit&eacute; des champs
  • if (empty($_POST["nom"])) { // L'utilisateur n'a pas rempli le champ pseudo
  • $erreur="Vous n'avez pas entr&eacute; votre nom..."; // On met dans erreur le message qui sera affich&eacute;
  • }
  • elseif (empty($_POST["email"])) { // L'utilisateur n'a pas rempli le champ email
  • $erreur="Nous avons besoin de votre e-mail pour vous r&eacute;pondre...";
  • }
  • elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email"])){ // On v&eacute;rifie si l'email est bien de la forme messagerie@domaine.tld (cf cours d'expressions r&eacute;guli&egrave;res)
  • $erreur="Votre adresse e-mail n'est pas valide...";
  • }
  • elseif (empty($_POST["objet"])) { // L'utilisateur n'a pas rempli le champ objet
  • $erreur="Vous devez entrer l'objet de votre message...";
  • }
  • elseif (empty($_POST["message"])) { // L'utilsateur n'a &eacute;crit aucun message
  • $erreur="Merci de saisir un message...";
  • }
  • else { // Si tous les champs sont valides, on change l'&eacute;tat &agrave; ok
  • $etat="ok";
  • }
  • }
  • else { // Sinon le formulaire n'a pas &eacute;t&eacute; soumis
  • $etat="attente"; // On passe donc dans l'&eacute;tat attente
  • }
  • if ($etat!="ok"){ // Le formulaire a &eacute;t&eacute; soumis mais il y a des erreurs (etat=erreur) OU le formulaire n'a pas &eacute;t&eacute; soumis (etat=attente)
  • if ($etat=="erreur"){ // Cas où le formulaire a &eacute;t&eacute; soumis mais il y a des erreurs
  • echo "<span style=\"color:red\">".$erreur."</span><br /><br />\n"; // On affiche le message correspondant &agrave; l'erreur
  • }
  • ?>
  • <div class="contactform">
  • <form method="post">
  • <fieldset><legend>&nbsp;Vos d&eacute;tails&nbsp;</legend>
  • <p><label for="contact_title" class="left">Votre titre :</label>
  • <select name="titre" id="contact_title" class="combo">
  • <option value="M." selected="selected">M.</option>
  • <option value="Mme">Mme</option>
  • <option value="Mlle">Mlle</option></select></p>
  • <p><label for="contact_firstname" class="left">Nom* :</label>
  • <input type="text" name="nom" id="contact_firstname" class="field" value="<?php
  • if (!empty($_POST["nom"])) {
  • echo htmlspecialchars($_POST["nom"],ENT_QUOTES);
  • }
  • ?>" /></p>
  • <p><label for="contact_familyname" class="left">Pr&eacute;nom :</label>
  • <input type="text" name="prenom" id="contact_familyname" class="field" value="<?php
  • if (!empty($_POST["prenom"])) {
  • echo htmlspecialchars($_POST["prenom"],ENT_QUOTES);
  • }
  • ?>" /></p>
  • <p><label for="contact_street" class="left">Adresse :</label>
  • <input type="text" name="adresse" id="contact_street" class="field" value="<?php
  • if (!empty($_POST["adresse"])) {
  • echo htmlspecialchars($_POST["adresse"],ENT_QUOTES);
  • }
  • ?>" /></p>
  • <p><label for="contact_postalcode" class="left">Code postal :</label>
  • <input type="text" name="code_postal" id="contact_postalcode" class="field" value="<?php
  • if (!empty($_POST["code_postal"])) {
  • echo htmlspecialchars($_POST["code_postal"],ENT_QUOTES);
  • }
  • ?>" /></p>
  • <p><label for="contact_city" class="left">Ville :</label>
  • <input type="text" name="ville" id="contact_city" class="field" value="<?php
  • if (!empty($_POST["ville"])) {
  • echo htmlspecialchars($_POST["ville"],ENT_QUOTES);
  • }
  • ?>" /></p>
  • <p><label for="contact_country" class="left">Pays:</label>
  • <select name="pays" id="contact_country" class="combo">
  • <option value="N/A">S&eacute;lection...</option>
  • <option value="France">France</option>
  • <option value="Canada">Canada</option>
  • <option value="Etats-Unis">&Eacute;tats-Unis</option>
  • </select></p>
  • <p><label for="contact_phone" class="left">T&eacute;l&eacute;phone :</label>
  • <input type="text" name="telephone" id="contact_phone" class="field" value="<?php
  • if (!empty($_POST["telephone"])) {
  • echo htmlspecialchars($_POST["telephone"],ENT_QUOTES);
  • }
  • ?>" /></p>
  • <p><label for="contact_email" class="left">E-mail* :</label>
  • <input type="text" name="email" id="contact_email" class="field" value="<?php
  • if (!empty($_POST["email"])) {
  • echo htmlspecialchars($_POST["email"],ENT_QUOTES);
  • }
  • ?>" /></p>
  • <p><label for="contact_url" class="left">Site Web :</label>
  • <input type="text" name="url" id="contact_url" class="field" value="<?php
  • if (!empty($_POST["url"])) {
  • echo htmlspecialchars($_POST["url"],ENT_QUOTES);
  • }
  • ?>" /></p>
  • </fieldset>
  • <fieldset><legend>&nbsp;D&eacute;tails du message&nbsp;</legend>
  • <p><label for="contact_subject" class="left">Sujet* :</label>
  • <input type="text" name="objet" id="contact_subject" class="field" value="<?php
  • if (!empty($_POST["objet"])) {
  • echo htmlspecialchars($_POST["objet"],ENT_QUOTES);
  • }
  • ?>" /></p>
  • <p><label for="contact_urgency" class="left">Priorit&eacute; :</label>
  • <select name="priorite" id="contact_urgency" class="combo">
  • <option value="Tr&egrave;s basse">Tr&egrave;s basse</option>
  • <option value="Basse">Basse</option>
  • <option value="Normale" selected="selected">Normale</option>
  • <option value="Haute">Haute</option>
  • <option value="Tr&egrave;s Haute">Tr&egrave;s haute</option></select></p>
  • <p><label for="contact_message" class="left">Message* :</label>
  • <textarea name="message" id="contact_message" cols="45" rows="10"><?php
  • if (!empty($_POST["message"])) {
  • echo htmlspecialchars($_POST["message"],ENT_QUOTES);
  • }
  • ?></textarea></p>
  • <p>Formulaire fourni par viki53 (http://viki53.free.fr/)</p>
  • <p><input type="submit" name="envoyer" class="button" value="Envoyer" /></p>
  • </fieldset>
  • </form>
  • </div>
  • <?php
  • }
  • else { // Sinon l'&eacute;tat est ok donc on envoie le mail
  • $titre = $_POST["titre"];
  • $nom = $_POST["nom"]; // On stocke les variables r&eacute;cup&eacute;r&eacute;es du formulaire
  • $email = $_POST["email"];
  • $url = $_POST["url"];
  • $objet = $_POST["objet"];
  • $message = $_POST["message"];
  • $adresse = $_POST["adresse"];
  • $code_postal = $_POST["code_postal"];
  • $ville = $_POST["ville"];
  • $pays = $_POST["pays"];
  • $telephone = $_POST["telephone"];
  • $priorite = $_POST["priorite"];
  • // ================= Les 3 lignes suivantes sont à modifier ====================================
  • $mon_email = "user@site.com"; // Mise en forme du message que vous recevrez
  • $mon_pseudo = ".:mwa:.";
  • $mon_url = "http://viki53.free.fr/";
  • $msg_pour_moi = "
  • Par $titre $nom $prenom
  • - E-mail : $email
  • - URL : $url
  • - Objet du message : $objet
  • - Message :
  • $message
  • - Autres:
  • Adresse: $adresse
  • $code_postal
  • $ville
  • $pays
  • Tel: $telephone";
  • // Mise en forme de l'accus&eacute; r&eacute;ception qu'il recevra
  • $accuse_pour_lui = "
  • Bonjour $titre $nom nous t&acirc;cherons de vous r&eacute;pondre le plus rapidement possible.\n\n
  • - Votre E-mail : $email \n
  • - Votre site : $url
  • - L'objet de votre message : $objet
  • - Votre message :
  • $message
  • Merci et &agrave; bient&ocirc;t sur $mon_url !
  • Formulaire fourni par viki53 (http://viki53.free.fr/)";
  • // Envoie du mail
  • $entete = "From: " . $mon_mail . "\n
  • Priorit&eacute;: $priorit&eacute;\n"; // On pr&eacute;pare l'entête du message
  • $entete .= "";
  • if (@mail($mon_email,$objet,$msg_pour_moi,$entete) && @mail($email,$objet,$accuse_pour_lui,$entete)){ // Si le mail a &eacute;t&eacute; envoy&eacute;
  • echo "<p style=\"text-align:center\">Votre message a &eacute;t&eacute; envoy&eacute;, vous recevrez une confirmation par mail.<br /><br />\n"; // On affiche un message de confirmation
  • echo "<a href=\"" . $mon_url . "\">Retour</a></p>\n"; // Avec un lien de retour vers l'accueil du site
  • }
  • else { // Sinon il y a eu une erreur lors de l'envoi
  • echo "<p style=\"text-align:center\">Un probl&egrave;me s'est produit lors de l'envoi du message.\n";
  • echo "<a href=\"".$_SERVER["PHP_SELF"]."\">R&eacute;essayez...</a></p>\n"; // On propose un lien de retour vers le formulaire
  • }
  • }
  • ?>
<?php
if (isset($_POST["envoyer"])){ // Si le formulaire a &eacute;t&eacute; soumis
    $etat = "erreur"; // On initialise notre etat &agrave; erreur, il sera chang&eacute; &agrave; "ok" si la v&eacute;rification du formulaire est un succ&egrave;s, sinon il reste &agrave; erreur

    // On r&eacute;cup&egrave;re les champs du formulaire, et on arrange leur mise en forme
	
	if (isset($_POST["titre"])) $_POST["titre"]=trim(stripslashes($_POST["titre"]));
	
    if (isset($_POST["nom"])) $_POST["nom"]=trim(stripslashes($_POST["nom"]));
	
	if (isset($_POST["prenom"])) $_POST["prenom"]=trim(stripslashes($_POST["prenom"]));

    if (isset($_POST["email"])) $_POST["email"]=trim(stripslashes($_POST["email"]));

    if (isset($_POST["url"])) $_POST["url"]=trim(stripslashes($_POST["url"]));
	
	if (isset($_POST["pays"])) $_POST["pays"]=trim(stripslashes($_POST["pays"]));
	
	if (isset($_POST["adresse"])) $_POST["adresse"]=trim(stripslashes($_POST["adresse"]));
	
	if (isset($_POST["code_postal"])) $_POST["code_postal"]=trim(stripslashes($_POST["code_postal"]));
	
	if (isset($_POST["ville"])) $_POST["ville"]=trim(stripslashes($_POST["ville"]));
	
	if (isset($_POST["telephone"])) $_POST["telephone"]=trim(stripslashes($_POST["telephone"]));

    if (isset($_POST["objet"])) $_POST["objet"]=trim(stripslashes($_POST["objet"]));
	
	if (isset($_POST["priorite"])) $_POST["priorite"]=trim(stripslashes($_POST["priorite"]));

    if (isset($_POST["message"])) $_POST["message"]=trim(stripslashes($_POST["message"]));

    // Apr&egrave;s la mise en forme, on v&eacute;rifie la validit&eacute; des champs
    if (empty($_POST["nom"])) { // L'utilisateur n'a pas rempli le champ pseudo
        $erreur="Vous n'avez pas entr&eacute; votre nom..."; // On met dans erreur le message qui sera affich&eacute;
        }
        elseif (empty($_POST["email"])) { // L'utilisateur n'a pas rempli le champ email
            $erreur="Nous avons besoin de votre e-mail pour vous r&eacute;pondre...";
        }
        elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["email"])){ // On v&eacute;rifie si l'email est bien de la forme messagerie@domaine.tld (cf cours d'expressions r&eacute;guli&egrave;res)
            $erreur="Votre adresse e-mail n'est pas valide...";
        }
        elseif (empty($_POST["objet"])) { // L'utilisateur n'a pas rempli le champ objet
            $erreur="Vous devez entrer l'objet de votre message...";
        }
        elseif (empty($_POST["message"])) { // L'utilsateur n'a &eacute;crit aucun message
            $erreur="Merci de saisir un message...";
        }
        else { // Si tous les champs sont valides, on change l'&eacute;tat &agrave; ok
            $etat="ok";
        }
}
else { // Sinon le formulaire n'a pas &eacute;t&eacute; soumis
    $etat="attente"; // On passe donc dans l'&eacute;tat attente
}

if ($etat!="ok"){ // Le formulaire a &eacute;t&eacute; soumis mais il y a des erreurs (etat=erreur) OU le formulaire n'a pas &eacute;t&eacute; soumis (etat=attente)
    if ($etat=="erreur"){ // Cas où le formulaire a &eacute;t&eacute; soumis mais il y a des erreurs
        echo "<span style=\"color:red\">".$erreur."</span><br /><br />\n"; // On affiche le message correspondant &agrave; l'erreur
    }
?>
          <div class="contactform">
            <form method="post">
              <fieldset><legend>&nbsp;Vos d&eacute;tails&nbsp;</legend>
                <p><label for="contact_title" class="left">Votre titre :</label>
                   <select name="titre" id="contact_title" class="combo">
                     <option value="M." selected="selected">M.</option>
                     <option value="Mme">Mme</option>
                     <option value="Mlle">Mlle</option></select></p>
					 
                <p><label for="contact_firstname" class="left">Nom* :</label>
                   <input type="text" name="nom" id="contact_firstname" class="field" value="<?php
        if (!empty($_POST["nom"])) {
        echo htmlspecialchars($_POST["nom"],ENT_QUOTES);
        }
        ?>" /></p>
				   
                <p><label for="contact_familyname" class="left">Pr&eacute;nom :</label>
                   <input type="text" name="prenom" id="contact_familyname" class="field" value="<?php
        if (!empty($_POST["prenom"])) {
        echo htmlspecialchars($_POST["prenom"],ENT_QUOTES);
        }
        ?>" /></p>
				   
                <p><label for="contact_street" class="left">Adresse :</label>
                   <input type="text" name="adresse" id="contact_street" class="field" value="<?php
        if (!empty($_POST["adresse"])) {
        echo htmlspecialchars($_POST["adresse"],ENT_QUOTES);
        }
        ?>" /></p>
				   
                <p><label for="contact_postalcode" class="left">Code postal :</label>
                   <input type="text" name="code_postal" id="contact_postalcode" class="field" value="<?php
        if (!empty($_POST["code_postal"])) {
        echo htmlspecialchars($_POST["code_postal"],ENT_QUOTES);
        }
        ?>" /></p>
				   
                <p><label for="contact_city" class="left">Ville :</label>
                   <input type="text" name="ville" id="contact_city" class="field" value="<?php
        if (!empty($_POST["ville"])) {
        echo htmlspecialchars($_POST["ville"],ENT_QUOTES);
        }
        ?>" /></p>
				   
                <p><label for="contact_country" class="left">Pays:</label>
                   <select name="pays" id="contact_country" class="combo">
                     <option value="N/A">S&eacute;lection...</option>
                     <option value="France">France</option>
                     <option value="Canada">Canada</option>
                     <option value="Etats-Unis">&Eacute;tats-Unis</option>
				   </select></p>
					 
                <p><label for="contact_phone" class="left">T&eacute;l&eacute;phone :</label>
                   <input type="text" name="telephone" id="contact_phone" class="field" value="<?php
        if (!empty($_POST["telephone"])) {
        echo htmlspecialchars($_POST["telephone"],ENT_QUOTES);
        }
        ?>" /></p>
				   
                <p><label for="contact_email" class="left">E-mail* :</label>
                   <input type="text" name="email" id="contact_email" class="field" value="<?php
        if (!empty($_POST["email"])) {
        echo htmlspecialchars($_POST["email"],ENT_QUOTES);
        }
        ?>" /></p>
				   
                <p><label for="contact_url" class="left">Site Web :</label>
                   <input type="text" name="url" id="contact_url" class="field" value="<?php
        if (!empty($_POST["url"])) {
        echo htmlspecialchars($_POST["url"],ENT_QUOTES);
        }
        ?>" /></p>
				   
              </fieldset>
				
				
              <fieldset><legend>&nbsp;D&eacute;tails du message&nbsp;</legend>
                <p><label for="contact_subject" class="left">Sujet* :</label>
                   <input type="text" name="objet" id="contact_subject" class="field" value="<?php
        if (!empty($_POST["objet"])) {
        echo htmlspecialchars($_POST["objet"],ENT_QUOTES);
        }
        ?>" /></p>
				   
                <p><label for="contact_urgency" class="left">Priorit&eacute; :</label>
                   <select name="priorite" id="contact_urgency" class="combo">
                     <option value="Tr&egrave;s basse">Tr&egrave;s basse</option>
                     <option value="Basse">Basse</option>
                     <option value="Normale" selected="selected">Normale</option>
                     <option value="Haute">Haute</option>
                     <option value="Tr&egrave;s Haute">Tr&egrave;s haute</option></select></p>
					 
                <p><label for="contact_message" class="left">Message* :</label>
                   <textarea name="message" id="contact_message" cols="45" rows="10"><?php
        if (!empty($_POST["message"])) {
        echo htmlspecialchars($_POST["message"],ENT_QUOTES);
        }
        ?></textarea></p>
				   <p>Formulaire fourni par viki53 (http://viki53.free.fr/)</p>
                <p><input type="submit" name="envoyer" class="button" value="Envoyer" /></p>
              </fieldset>
            </form>
          </div>
<?php
}
else { // Sinon l'&eacute;tat est ok donc on envoie le mail
	$titre = $_POST["titre"];
    $nom = $_POST["nom"]; // On stocke les variables r&eacute;cup&eacute;r&eacute;es du formulaire
    $email = $_POST["email"];
    $url = $_POST["url"];
    $objet = $_POST["objet"];
    $message = $_POST["message"];
	$adresse = $_POST["adresse"];
	$code_postal = $_POST["code_postal"];
	$ville = $_POST["ville"];
	$pays = $_POST["pays"];
	$telephone = $_POST["telephone"];
	$priorite = $_POST["priorite"];
// ================= Les 3 lignes suivantes sont à modifier ====================================
    $mon_email = "user@site.com"; // Mise en forme du message que vous recevrez
    $mon_pseudo = ".:mwa:.";
    $mon_url = "http://viki53.free.fr/";
    $msg_pour_moi = "
Par $titre $nom $prenom
- E-mail : $email
- URL : $url
- Objet du message : $objet
- Message :
$message

- Autres:
Adresse: $adresse
$code_postal
$ville
$pays
Tel: $telephone";

    // Mise en forme de l'accus&eacute; r&eacute;ception qu'il recevra
    $accuse_pour_lui = "
Bonjour $titre $nom nous t&acirc;cherons de vous r&eacute;pondre le plus rapidement possible.\n\n
- Votre E-mail : $email \n
- Votre site : $url
- L'objet de votre message : $objet
- Votre message :
$message

Merci et &agrave; bient&ocirc;t sur $mon_url !

Formulaire fourni par viki53 (http://viki53.free.fr/)";

    // Envoie du mail
    $entete = "From: " . $mon_mail . "\n
	Priorit&eacute;: $priorit&eacute;\n"; // On pr&eacute;pare l'entête du message
    $entete .= "";

    if (@mail($mon_email,$objet,$msg_pour_moi,$entete) && @mail($email,$objet,$accuse_pour_lui,$entete)){ // Si le mail a &eacute;t&eacute; envoy&eacute;
        echo "<p style=\"text-align:center\">Votre message a &eacute;t&eacute; envoy&eacute;, vous recevrez une confirmation par mail.<br /><br />\n"; // On affiche un message de confirmation
        echo "<a href=\"" . $mon_url . "\">Retour</a></p>\n"; // Avec un lien de retour vers l'accueil du site
    }
    else { // Sinon il y a eu une erreur lors de l'envoi
        echo "<p style=\"text-align:center\">Un probl&egrave;me s'est produit lors de l'envoi du message.\n";
        echo "<a href=\"".$_SERVER["PHP_SELF"]."\">R&eacute;essayez...</a></p>\n"; // On propose un lien de retour vers le formulaire
    }
}
?>

Conclusion

Et voilà un formulaire utile et simple.

Un maximum de détail peut se révéler utile.

P.S: Seul nom, email, objet et message sont obligatoires. La modification peut être faite très rapidement si vous souhaitez rendre d'autres champs obligatoires. A vous de jouer !
 

Historique

09 février 2008 12:58:35 :
Précision de l'envoi de l'accusé
09 février 2008 23:07:31 :
Ajout d'un aperçu et modification du descriptif.
26 février 2008 23:07:35 :
Merci de ne pas abuser de la démo pour ne pas pourrir ma boîte.

Commentaires et avis

signaler à un administrateur
Commentaire de malalam le 09/02/2008 13:25:02 administrateur CS

Hello,

bon...je vais tâcher d'être le plus objectif possible :
- je suis gêné par tes commentaires "formulaire idéal", "idéal pour un site pro"...il ne faut pas exagérer. Je suis un pro (j'entends par là que le développement web, c'est mon boulot) et les formulaires que je peux avoir sur mes applicatifs web ne ressemblent jamais à ça. Le code est long et n'est lié à rien. Généralement, on a une base de données derrière, et on condense le code en se basant sur les champs de notre bdd. Il faut savoir rester modeste.
- des formulaires de ce type, on en trouve des tonnes que ce soit sur ce site, ou sur le net en général.
- tu as fait un effort évident sur le html et sur la sécurisation...sauf que ta sécurisation n'est que très partielle. Il n'y a rien de dangereux dans ce formulaire puisqu'on ne fait que le poster par email. Sauf qu'on peut facilement te spammer avec, par exemple.
- tu ne gères qu'une seule erreur à la fois.
- les champs non obligatoires ne sont pas vérifiés : on peut saisir n'importe quoi dans le champ téléphone, ou code postal.
- le php est vieillot ou mal optimisé : des " quand des ' suffisent (gain de place, et de rapidité), assignations de variables inutiles ($nom = $_POST["nom"] : pour quoi faire au juste ? A part doubler le volume de tes variables en mémoire ?

Bref, ton code n'est pas mauvais : simplement, il n'a rien d'un code pour professionnels, et rien d'idéal non plus. C'est par contre un bon code pour grands débutants : il est meilleur dans son genre que bien d'autres. Mais il est loin d'être idéal.

signaler à un administrateur
Commentaire de viki53 le 09/02/2008 13:53:45

Je sais que c'est loin d'être le meilleur de tous!

Mais je le propose car beaucoup de débutants en cherche et que la plupart de ceux que l'on trouve n'ont que 3 ou 4 champs.

Et si je dis qu'il peut servir sur un site pro, j'entend par là un site par exemple pour des petites entreprises ou des petites associations, etc.

En tout cas merci, l'avis d'un pro peut toujours servir pour me fair évoluer. Toute critique ou encouragement est toujours bon à prendre :)

signaler à un administrateur
Commentaire de codefalse le 09/02/2008 19:11:53 administrateur CS

Yop :)

J'irai dans le sens de Malalam, l'idée qu'il ne faut pas oublier, c'est que Php te permet du dynamisme ; si je te demande un champs en plus ? ou deux en moins, tu fait comment ? Il faut que tu modifie tout ton code rien que pour ca.

Pourquoi ne pas faire un script qui prends en parametre d'entreé les différents champs à afficher (label, type, longueur, message par défaut, etc), et en sortie il va analyser les valeurs entrées, et valider (ou non) le formulaire.

Il faut penser Flexibilité car ton cas ne sera pas forcément celui de la personne en face.

Finalement, il est déconseillé de mettre des superlatifs, Idéal, parfait, ne conviennent jamais pour un code :p (Et si tu regarde, tous les codes avec un "super", "idéal", "meilleur" ne sont pas les meilleurs :p).

En tout cas bon courage pour ta quete du Php :), c'est en faisant des erreurs que l'on progresse, alors courage ! :)

signaler à un administrateur
Commentaire de snoopip le 09/02/2008 20:52:43

Bonjour, SVP aide... je suis debutatn et je ne trouve pas l'endrois ou l'on dois inscrir son email dans le code... svp

signaler à un administrateur
Commentaire de snoopip le 09/02/2008 20:57:13

Vous pouvez SVP indiquer les ligne ou il faut faire des changement.... Merci d'avance.

signaler à un administrateur
Commentaire de coucou747 le 09/02/2008 21:48:05

http://viki53.free.fr/voir-article.php?news=12%20UNION%20SELECT%201&titre=Des%20bugs%20chez%20Skyrock%20Blog?

ideal pour un site cible d'attaques ! plein de failles, et facile a spammer...

PS: en exploitant ca, on peut extraire un password admin

signaler à un administrateur
Commentaire de viki53 le 09/02/2008 22:50:10

Il faut modifier les lignes 181, 182 et 183 affichées ici.

Ce sont les variables "mon_mail", "mon_url" et "mon_pseudo"

Et voilà

Sinon merci à tous pour vos remarques, j'ai commencé le PHP il y a seulement 3 ou 4 mois, donc je me construit. Je trouve quand même que mon script est pas trop mal :p (à mon avis).

Et pour le hacking du site, je n'y peux rien pour l'instant, je viens de commencer à refaire le système de news, mais j'aurais besoin d'aide :s

Merci à tous

signaler à un administrateur
Commentaire de codefalse le 10/02/2008 00:05:38 administrateur CS

L'avantage de ta progression (et sa constatation), c'est quand tu relira ce code dans ... un an :p

signaler à un administrateur
Commentaire de viki53 le 10/02/2008 00:08:11

XD

Oui j'suis bien d'accord

Je sais que je suis ... humm ... nul :D

Mais bon, on fait avec :p

En tout cas si une bonne âme charitable passe par ici et serait d'accord pour m'aider sur mon site merci de me le dire (une bonne raison de tester mon script de contact :p)

signaler à un administrateur
Commentaire de codefalse le 10/02/2008 13:12:42 administrateur CS

J'ai jamais dit que tu était nul, j'ai juste dit que tu avait des progrès à faire, tout comme tout le monde ici, personne n'est jamais très bon, on a toujours des nouveaux trucs à apprendre (:

Par contre je pourrai pas t'aider, j'ai absolument pas le temps (je l'ai même pas pour moi :/). Mais demande de l'aide sur le forum, tu trouvera peut-etre ce qu'il faut là bas ? :)

signaler à un administrateur
Commentaire de viki53 le 10/02/2008 13:15:49

Je sais que je suis pas nul au sens propre, je rigole (j'adore l'auto dérision :p)

Sinon pour l'aide c'est pas grave, je prends mon temps, mais je vais aller voir sur le forum.

Merci en tout cas et bonne continuation ;)

signaler à un administrateur
Commentaire de coucou747 le 10/02/2008 13:19:48

pour les failles que j'ai mises en evidence, ce sont des XSS du genre :

mysql_query('select ... from table where id='.$_GET['id']);
moi j'injecte un UNION SELECT

une solution : tu verifies si $_GET['id'] est bien un nombre (is_numeric)

signaler à un administrateur
Commentaire de viki53 le 10/02/2008 13:27:00

Merci mais là j'ai du mal à utiliser cette fonction, je sais pas pourquoi :s

Eh oui, je suis TREEEES loin de votre niveau :p

signaler à un administrateur
Commentaire de nboutron le 11/02/2008 09:58:53

Bonjour vicky,
Je crois bien que Socrate disait c'est quand on sait que l'on se rend compte qu'on ne sait pas grand chose. AU fur et à mesure de la progression on se rend compte effectivement qu'en matière de php on peut automatiser beaucoup de choses et obtenir un code plus lisible avec moins de risques d'erreur. Par exemple pour tes ifisset post et leur traitement à répétition, sache que tu peux simplifier avec:
//Le fait d'envoyer un formulaire crée un tableau associatif $cle $valeur - enfin je crois - s'il y a des experts sur le forum, les critiques sont les bienvenues
foreach ($_POST as $cle=>$valeur)
{
// dans le if tu mets tout ce que tu ne veux pas traiter
if ($cle !="date" &  $cle !="valider")
//Là c'est le traitement de tes valeurs POST
$valeur=trim(stripslashes($valeur);
}


Tu peux aussi utiliser des fonctions pour te faciliter les formulaires, du type :

//génère un input formaté dans une ligne de tableau - tu mets cette fonction à fin de ton code, ou alors dans une feuille externe où tu rassembles toutes tes fonctions
function input ($intitule,$inputname,$inputvalue,$taille)
{
echo "<tr>
<td width='150'  align='left'>$intitule :
</td>
<td  width='500'  align='left'><input type=\"texte\" name=\"$inputname\" value=\"$inputvalue\" size=\"$taille\">
</td>
</tr>";
}
et tu l'appelles comme ça :
input ('email','email',"$email",'50');

Tu peux aussi rajouter les styles dans ta fonction, tout ce que tu veux en fait !!

L'idéal, bien sûr, après c'est de passer en programmation orienté objet (poo) avec PHP5 - mais là moi, je trouve ça un peu dur, je suis autodidacte et je ne me suis mise au PHP que depuis 2 ans et je n'ai pas encore cette logique d'esprit. Il parait que quand on y touche on ne peut plus s'en passer, alors pour le moment je ne fait qu'observer !!

Ah oui, puis je voulais te dire, sur ce forum, les gens qui t'ont répondu sont quand même vachement gentils, parce qu'en général, les informaticiens ils veulent préserver leur pré carré et quand tu leur poses une question, ils te répondent plutot : c'est trop grave de vouloir faire une application professionnelle quand on est aussi débutant et quand on a pas des bases solides ! Et tu peux toujours attendre pour avoir la réponse et je me demande toujours pourquoi ils répondent sur le forum si c'est pas pour aider les débutants ?

Mais c'est vrai ils ont raison les autres, ton code est bien pour aider les débutants, mais il gagnerait à être simplifié. C'est sympa aussi de contribuer à aider les autres en laissant ton code source - Y en a que ça aide.

Et en ce qui me concerne, je ne me prends pas pour Socrate, mais je sais que ce que j'ai écrit n'est pas non plus la panacée (c'est pas bien de faire des tableaux, il faut faire des css et du style !!) - n'empêche que le PHP c'est passionnant et je te conseille vraiment d'y associer les bases de données (Mysql) si ce n'est déjà fait.

Bon courage !!

signaler à un administrateur
Commentaire de abouselmaa le 10/03/2008 23:24:22

nboutron

merci , en lisant les comm des admin je me disait qu'est ce qu'ils racontent en parlant de simplifié sans rien montrer ;(php c'est pas simple lol,,,, on debute normal)
la sa va j'ai pas tout capter la facon de cogiter mais je vois le dieze , sisi

cool
merci tout le monde

signaler à un administrateur
Commentaire de coucou747 le 11/03/2008 07:43:06

t'as qu'a aller voir leurs sources...

signaler à un administrateur
Commentaire de bil800 le 24/03/2008 12:09:28

Important!

1- Petite correction dans la ligne $entete = "From: ". $mon_mail ."\n il faudra la remplcer par $entete = "From: ". $mon_email ."\n

Cela permet d'avoir l'entete exacte du message ;)

signaler à un administrateur
Commentaire de dsyann le 17/07/2008 21:10:02

salut
je pense que ton code est bien a quelques exceptions pres:
tu pouvais simplifier la plupart des taches via des fontions ou methodes mais la n'est pas l'important.
Tu as en effet charge trop la memoire de variable disant le comme ca redondante:
mettre un post qlq chose dans @var. c la mm chose.
En plus j'aime pas sature mon serveur web ni de donnéee ou quoi que ce soit par des requetes tantot inutil.
J veux dire par la c'est qu'on a pas besoin d'aller envers le serveur web pour verifier la conformite de l'email par exmple: javascript peut le faire. c'est le cas avec des controls sur des champs vides. Ou est passe ces bon codes longs, droles qu'on adorait en javascript. en effet quand nous develloppons pour la maison ca marche mais plus le serveur est attaque faudrait peut etre reflechir a moins surcharge les serveurs, c'est pas une verite absolue mais juste ce que je pense

signaler à un administrateur
Commentaire de lyesben le 19/02/2009 15:34:03

Il est nul ton code...

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

code simple pour formulaire [ par bernard ] bonsoir à tous, je suis débutant de chez débutant et j'ai besoin d'aide.je voudrais réaliser un programme en php.il s'agit d'un formulaire où le visit formulaire sans bdd ? [ par ze_bassman ] voilà, j'ai un formulaire simple a creer (4 champs de texte, une zone de texte et un menu déroulant, je souhaiterai que les données soient envoyé par formulaire de contact [ par ghazizix ] &nbsp;bonjour, je veux cr&#233;er un formulaire de contact dont un user ne peut se contacter que si s'identifier avant ainsi que je veux ajouter un ch question simple dur l'action d'un formulaire [ par developvbdebut ] Bonjour tout le monde&nbsp;Je voudrais m&#234;ttre mon script php en&nbsp;dessou du formulaire, j'ignore quoi mettre dans l'action du formulaire.Voici Chemin complet d'un fichier via formulaire [ par hippyz ] Salut. Voil&#224; je souhaiterais obtenir le chemin complet d'un fichier s&#233;lectionn&#233; via un formulaire. Merci. Question simple [ par LaTatadu91 ] Bonjour,voila j'ai une question tres simple:j'effectue dans un script un controle des champs d'un formulaire pour savoir si ils sont bien rempliset ds formulaire simple sans mailto: avec fenêtre de confirmation [ par bullemalo ] bonjour, j'imagine que la question a déjà été posée. Voilà je suis nouvelle dans le monde du PHP alors soyez indulgents... J'ai crée un formulaire sur Retour a la ligne affichage d'un formulaire [ par ArC3Nik ] BonjourMon problème et simple je pense...J'ai un page avec un formulaire :dans mon formulaire un un champ texte multilignesEt et quand ont clique sur Mettre entre balise par simple click,un texte selectionné... [ par skab ] Bonjour! voila je voudrais savoir comment faire pour&nbsp; mettre entre balises un morceau de texte selection&#233; dans un formulaire j'utilise deja Formulaire en PHP ! [ par boby1313 ] Salut jaimerais que vous me donner tout le code complet complet complet! d'un formulaire deja fais de A à Z tout me le marquer pour la page formulaire


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,435 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.