5568 sujets

Sémantique web et HTML

Pages :
Bonjour tout le monde !

Bon alors je vous explique ma situation:

Il y a un petit moment, j'ai créé mon portfolio et j'avais un peu de mal à créer mon fichier contact.
J'ai fini par m'aider de quelques tutos et je me suis donc retrouvé avec un formulaire qui marchait parfaitement avec un fichier contact.html (contenant les vérifications des différents champs à remplir avec une fonction javascript) et un autre traitement.php (qui contenait les fonctions d'envois et de redirection vers une page "Le mail a bien été envoyé...").

Enfin bref tout allais très bien, mis a part quelques messages "spam" dans ma boite mail qui sont apparus depuis la mise en ligne de ces fameux fichiers dont je n'ai jamais pu expliqué l'existence Smiley confus .

Et puis il y a peu j'ai testé mon fameux contact pour vérifié que tout allait bien pour l'intégrer à un autre projet en cours et là surprise ! : plus rien ne marche, en tout cas je ne reçoit plus de mail, dans n'importe laquelle que je test.

Vous comprenez a peu près mon problème maintenant? Smiley sweatdrop

donc voila je vais vous passer le fichier traitement tout de suite dans un autre post

j'espère que vous pourrez m'aider Smiley biggrin
<?php
$adresse="mon.adresse@hotmail.fr";
$from="From: $pnom $nom<$mail>\r\n";
$from.="Reply-To: $pnom $nom <$mail>\n";
$from.="X-priority:3\n";
$texte="<html>";
$texte.="<h1>De : $nom $pnom</h1>";
$texte.="<h1>E-mail : $mail</h1>";
$texte.="<br>";
$texte.="<h2>$sujet</h2>";
$texte.="<br><br>";
$texte.="<p>";
$texte.="$message";
$texte.="</p>";
$texte.="</html>";
$from.="MIME-Version: 1.0\r\n";
$from.="Content-Type: text/html"; 
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body class="visu">
    <br><br><br><br><br><br>
    
    <div class="texte">
        
        <?php
            if (mail($adresse,$sujet,$texte,$from))
            echo("<center><br><br><br><h2>Votre message nous a bien &eacutet&eacute transmis. Nous vous r&eacutepondrons ou contacterons le plus rapidement possible.</h2><br><a href='accueil.php'>Cliquez ici pour revenir &agrave la page d'accueil</a></center>");
            else
            echo("<center><br><br><br><h2>Une erreure est survenue lors de l'envoi de votre message. Veuillez r&eacuteessayer l'envoi SVP.</h2><br><a href='mailto:$adresse'>Contactez nous plus classiquement</a>");
        ?>
        
    </div>

</body>

</html>

Modifié par bastos71 (19 Aug 2011 - 17:52)
Bonsoir,

tu dois avoir des fautes de syntaxe. comme là par exemple:


$texte.="<h2>$sujet</h2>";


la version correcte est :


$texte.="<h2>".$sujet."</h2>";


sinon, tes variables risquent pas d'être récupérées mais traitées comme du texte simple entre 2 balises html. Au niveau de ta boucle if, perso je rajouterai les {}.
ta variable $from, je la dégagerai. sert à rien ou à pas grand chose. recevoir le mail en format html, c'est pas une bonne idée.
sinon, c'est un nid à microbes ton formulaire. as-tu instauré des contrôles de validation?
oui pour les validations j'ai bien fait un javascript qui vérifie si chaque champ contient du texte, un @ pour l'adresse mail.

De tout façon j'ai fais en sorte que si la personne n'a pas mis des infos dans chaque champ, la redirection vers le fichier "traitement.php" n'est pas effectuée.

Mais bon comme tu l'as dis c'est un *nid à microbe* ^^'

Donc je pense que resuivre un autre tuto serait une sage décision Smiley cligne
Je pensais pourtant que celui-ci était fiable Smiley ohwell

si tu veux y jeter un oeil : http://www.mmt-fr.org/article75.html
re-bonjour,

je n'ai pas regardé le tuto dans le détail. Toutefois, un tuto c'est une base, tu ne peux pas faire juste un copier-coller. ce serait trop simple, tu dois l'améliorer. JavaScript, pfff....je sens que je vais en faire râler certains sur ce forum. JavaScript, c'est de la poudre aux yeux, je désactive et je mets ce que je veux dans ton formulaire.

un exemple en php à adapter pour contrôler une adresse email:


if (filter_var($_REQUEST['email'],FILTER_VALIDATE_EMAIL)) {
$Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#'; 
 if(preg_match($Syntaxe,$_REQUEST['email'])){
  if (mail($destinataire,$titre,$message)==true) {

 print "ben là, c' est gagné";

  }
  else {

  print "ben là, c' est perdu";

  }
  else {

  print "ben là, c' est perdu aussi";

  }
 }
}


rajoutes aussi un captcha. Google est ton meilleur ami, tu trouveras des scripts tout prêts en php. Humm, essaies de produire une structure de contrôle globale en php pour chaque champ de formulaire.

intéresse-toi aussi à des fonctions comme :

htmlspecialentities
htmlspecialchars

pour éviter des saisies en html, en javascript dans ton formulaire. Avec ces outils, tu devrais éviter les grosses catastrophes.
FloydinBremen a écrit :
Bonsoir,

tu dois avoir des fautes de syntaxe. comme là par exemple:


$texte.="<h2>$sujet</h2>"


la version correcte est :


$texte.="<h2>".$sujet."</h2>"


Désolé de te contredire mais c'est parfaitement valide ! C'est justement là que se trouve la différence entre les simples quotes (') et les doubles quotes ("), de pouvoir y insérer des variables qui seront remplacées par leur valeur.
Modifié par pixelb (20 Aug 2011 - 08:50)
Merci Floyd pour ton aide Smiley cligne pourtant pour en revenir au copier / coller, le javascript c'est moi qui l'ai réalisé, j'ai juste repris les bases du tuto pour réalisé mon formulaire et mon php Smiley cligne
Modérateur
Bonjour Bastos71,

Ce que FloydinBremen dit, et il a tout à fait raison là-dessus, c'est que tu ne peux pas contrôler les champs uniquement par Javascript.

Le Javascript peut être non seulement désactivé dans un navigateur Web, mais il peut également être modifié en temps réel par le visiteur.

La validation du formulaire doit se faire absolument côté serveur via PHP. La couche Javascript doit être ajoutée seulement après.

J'ajouterais aussi qu'utiliser l'adresse from du formulaire pour transmettre ton courriel est une vraie passoire. Non seulement ça me permettrait d'envoyer des courriels sous l'adresse de n'importe qui, mais je suis plutôt certain que ça risque de ne pas fonctionner la plupart du temps ou être considéré comme du spam pur et simple. Il est préférable d'utiliser un from générique relié à ton nom de domaine/serveur mail, et d'utiliser le from du formulaire uniquement dans le reply-to.
Modifié par Tony Monast (20 Aug 2011 - 15:49)
D'accord je vois ce que tu veux dire Smiley ohwell

Pour les vérifications en php je viens de trouver un tuto qui utilise les fonctions de verif FILTER_VALDATE qui m'ont l'air pas mal du tout.

Il me reste donc a regardé ce php mai bon je vis faire ce que je peux ^^' je suis débutant et j'essaye de toucher à pas mal de trucs à la fois mais là ça me dépasse un peu ^^'
Modérateur
En même temps, la création d'un formulaire en PHP est souvent une bonne façon d'apprendre le PHP, ou n'importe quel langage côté serveur. Ça permet de toucher aux conditions, aux variables, à la gestion des messages d'erreur et à une partie des normes de sécurité. Une fois que tu maîtriseras bien le code du formulaire, ce sera encore plus facile après de créer des formulaires pour insérer/modifier ou supprimer des enregistrements dans une base de données. Ça vaut l'effort et le temps. Smiley cligne
Bon ba c'est bon j'ai réussi a réalisé mon fichier contact.php avec mon formulaire, ses vérif en php et son traitement en php. Smiley biggrin

merci de votre aide les gens Smiley cligne

A bientot !
Modérateur
Si tu le souhaites, tu peux nous montrer ton code final pour t'assurer que tu n'as pas fait d'erreurs.

Ne développant pas en PHP, je ne sais pas si cette faille est encore d'actualité, mais informes-toi sur l'Email Injection.
ok voici mon nouveau code :


vérification php des champs remplis par l'utilisateur et traitement des données pour me les envoyer par mail :


<?php
if(!empty($_POST)){
	extract($_POST);
    $valid = true ;
    
    if(empty($nom)){
    	$valid = false;
        $errornom = "Veuillez entrer votre Nom";
        }
        
    if(empty($pnom)){
    	$valid = false;
        $errorpnom = "Veuillez entrer votre Prénom";
        } 
    
    if(empty($mail)){    
    	$valid = false;
        $errormail = "Veuillez entrer votre adresse E-Mail";
        }
        
    if(!empty($mail) && !preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#",$mail)){
    	$valid = false;
    	$errormail = "L'adresse mail indiquée est incorrecte";
        }
    	
        
    if(empty($sujet)){
    	$valid = false;
        $errorsujet = "Veuillez indiquer le Sujet de votre message";
        }
        
    if(empty($message)){
    	$valid = false;
        $errormessage = "Veuillez entrer votre Message";
        }
    }
	if($valid) {
		$to = "mon.adresse@gmail.com";
		$subject = "Contact Porte Folio - ".$nom." ".$pnom." : '".$sujet."'";
		$headers = 'MIME-Version: 1.0' . "\r\n";
		$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
		$header = "From: $mail \r\n";
		$header = "Reply-To: $mail ";
		
		if(mail($to,$subject,$message,$header)) {
			$ok = "Votre message m'a bien été envoyé !";
		}
		else {
			$erreur = "Une erreur est survenu, veuillez réessayé l'envoie de votre message SVP.";
		}
		
		unset($nom);
		unset($mail);
		unset($message);
		}



mon formulaire :


<form action="contact.php" method="post">

    	  <label for="nom">Votre Nom :</label>
    	  <input id="entre" type="text" name="nom" />
    	  <span class="error"><?php if(isset($errornom)) echo $errornom; ?></span>
    	  
    	  <label for="pnom">Votre Prénom :</label>
    	  <input id="entre" type="text" name="pnom" />
    	  <span class="error"><?php if(isset($errorpnom)) echo $errorpnom; ?></span>
    	  
    	  <label for="mail">Votre Adresse E-Mail :</label>
    	  <input id="entre" type="text" name="mail" />
    	  <span class="error"><?php if(isset($errormail)) echo $errormail; ?></span>
    	  
    	  <label for="sujet">Sujet de Votre Message :</label>
    	  <input id="entre" type="text" name="sujet" />
    	  <span class="error"><?php if(isset($errorsujet)) echo $errorsujet; ?></span>
          
          <label for="message">Votre Message :</label>
          <textarea id="entre" name="message" rows="15" cols="60"></textarea>
          <span class="error"><?php if(isset($errormessage)) echo $errormessage; ?></span>
    	  
    	  <input type="submit" name="envoyer" value="Envoyer">
    	  
    </form>
Bonjour,

un id est unique. ton id="entre", ben, c'est pas bon. même sans avoir le code source complet de ta page qui contient le formulaire, je pense que tes structures de contrôles ne fonctionnent pas. D'autre part, s'assurer qu'un champ n'est pas vide, c'est bien. Contrôler le contenu, c'est mieux. ceci : "<script></script>" n'est pas quelque chose de vide. je peux donc injecter des scripts ou du html dans ton formulaire. As-tu essayé de tester tes pages php en installant un environnement come XAMPP?
Heu non ça je connais pas Smiley ohwell

Par contre oui mes pages marche super bien, si tu veux voir le résultat :

http://bserprix.free.fr/mon-portfolio/contact.php


ha et du coup c'est vrai que j'avais oublié cette hisoire d'id mais bon comme je les ai juste utilisées pour ma feuille de style, le les ai remplacé en class.
Modifié par bastos71 (25 Aug 2011 - 11:05)
oui d'accord je vois ce que tu voulais dire ! Smiley biggrin

mais alors du coup faut faire quoi pour éviter ça ??
Bonjour,

A améliorer bien sûr, c'est juste un début :


<?php 

$Prenom=$_POST['Prenom'];
$Prenom=trim($Prenom);
$Prenom=htmlspecialchars($Prenom);
$Longueur=strlen($Prenom);
$Syntaxe='^[a-zA-Z]^';
if(($Longueur<20)&&(preg_match($Syntaxe,$Prenom))) {
 echo $Prenom;
 }
 else {
 echo "une erreur est survenue lors de la saisie";
}
?>


Donc là, c'est juste pour le champ de formulaire prénom..... Smiley lol
La syntaxe est à améliorer pour les prénoms composés. avec espace, ou un tiret. mais bon les chiffres ou autres bizarreries dans un prénom, c'est que dans les séries télévisées Smiley lol
Pas plus de 20 caractères pour le prénom.
Bien sûr, on utilise avant un isset pour s'assurer que le champ est rempli (ou empty() )
maintenant à toi d'améliorer, et/ou de compléter. Smiley lol
bon courage.
Pages :