5546 sujets

Sémantique web et HTML

Bonjour à tous,
Je suis spammé en permanence via mon formulaire de site web.
Je souhaiterai mettre donc 3 filtres sur mon formulaire d'envoi de mail.
Voici mes fichiers de formulaire
contact.php :
<?php 
	include_once('templates/page_head.php');
?>
	<section class="contact">

		<div class="container">
			<div class="row">
				<div class="col-md-12">
					<div class="contact-form">
                        <div id="success" class="col-md-10"></div>
						<form name="contactForm" id="contactForm" method="POST" action="mail/mail.php">
                            <div class="col-md-6">
                                <div class="row control-group">
                                    <div class="form-group col-xs-12">
                                        <label>Civilité</label>
                                        <select class="form-control" name="sex" id="sex">
                                            <option value="Mr">Monsieur</option>
                                            <option value="Mm">Madame</option>
											<option value="Melle">Mademoiselle</option>
                                        </select>
                                    </div>
                                    <div class="form-group col-xs-12">
                                        <label>Nom</label>
                                        <input type="text" name="name" class="form-control" placeholder="Votre Nom" id="name" required>
                                    </div>
                                </div>
                                <div class="row control-group">
                                    <div class="form-group col-xs-12">
                                        <label>Email</label>
                                        <input type="email" name="email" class="form-control" placeholder="Votre Adresse Mail" id="email" required>
                                    </div>
                                </div>
                                <div class="row control-group">
                                    <div class="form-group col-xs-12">
                                        <label>Téléphone</label>
                                        <input type="text" name="phone" class="form-control" placeholder="Votre téléphone" id="phone" required>
                                    </div>
                                </div>
							</div>
                            <div class="col-md-6">
                                <div class="row control-group">
                                    <div class="form-group col-xs-12">
                                        <label>Message</label>
                                        <textarea rows="12" name="message" class="form-control" placeholder="Votre Message" id="message" required></textarea>
                                    </div>
                                </div>
                            </div><br>
	                        <div class="row">
	                            <div class="form-group col-xs-11 text-right">
	                                <button type="submit" id="btnSubmit" class="btn btn-info">Envoyer</button>
	                            </div>
	                        </div>
	                        <br>
							
	                    </form>
					</div>
				</div>
			</div>
		</div>
	</section>
<?php 
	include_once('templates/page_footer.php');
?>


mail.php :
<?php
	if(empty($_POST['name'])  		||
	   empty($_POST['email']) 		||
	   empty($_POST['message'])		||
	   empty($_POST['phone'])		||
	   empty($_POST['sex'])			||
	   !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
	   {
		echo "Pas de données envoyées!";
		return false;
	   }
		
	$name = $_POST['name'];
	$sex = $_POST['sex'];
	$phone = $_POST['phone'];
	$email_address = $_POST['email'];
	$message = $_POST['message'];
		
	$to = 'adresse mail destinataire';
	$email_subject = "mail site web";
	$email_body = "mail site web.\n\n$sex $name\n\nEmail: $email_address\n\nTéléphone: $phone\n\nMessage:\n$message";
	$headers = "From: adresse mail d'envoi\n";
	mail($to,$email_subject,$email_body,$headers);
	
	return true;
?>





1) Il faut que la variable téléphone soit un numéro de 10 chiffres (pas plus et pas moins).
2) Il faut que la variable téléphone ne commence pas par un 8.
3) Il faut que la variable téléphone ne commence pas par un + (numéro étrangé).

N'y connaissant rien en codage (mon webmaster étant décédé), j'aimerai avoir votre aide Smiley cligne

Mil merci d'avance...
Hello,

Tu peux utiliser l'input type tel et ajouter un pattern:

<input type="tel" pattern="^(?!8|\+).+[0-9]{10}" required/>


Ne débutant pas par "8" ou "+" : ^(?!8|\+).+
Uniquement des chiffres de 0 à 9 : [0-9]
Sur 10 caractère uniquement : {10}

En plus sur téléphone cela t'affichera le clavier numérique. au lieu de l'input type text qui t'affichera le clavier alphanumérique.
Modifié par JENCAL (04 Sep 2017 - 15:55)
Merci beaucoup JENCAL, mais je rajoute cela où ?
Dès réponse, je fais des essais Smiley cligne Smiley biggrin
Modifié par valttt (04 Sep 2017 - 16:14)
Merci Smiley cligne , stupide garçon que je suis.... Smiley biggol

J'ai quelque peu modifier le code de façon à ce que le numéro commence obligatoirement par 01 - 02 - 03 - 04 - 05 - 06 - 07 ou 09 (numéro français), et non pas 08, puis soit bien sur 10 chiffres.
<input type="tel" name="phone" class="form-control" placeholder="Votre téléphone" id="phone" pattern="0[1-7|9][0-9]{8}" required>


Maintenant, comment faire en sorte que le méchant spammer n'ait pas de message d'alerte comme quoi sont numéro n'est pas valide (bah oui, faut bien ruser comme on peut.... Smiley cligne Smiley langue Smiley lol ) ?

PS: J'ai essayé avec
onInvalid="setCustomValidity(' ')"
mais je souhaite ne pas avoir de "bulle" de message d'erreur.

Merciiiiiiiiiiiiiiiiiiiii Smiley cligne
Modifié par valttt (05 Sep 2017 - 15:03)
alors si tu veux rusé, il faut gérer la sécu coté serveur, et non coté client, car le message d'alert propre à "required" ne peux pas être supprimer.
Tu peux faire un "novalidate" sur ton form pour éviter cela, mais du coup c'est uniquement pour gérer coté serveur.
Merci, donc comme je ne peux pas gérer la sécu coté serveur, je me contenterais d'une bulle vide...
Mil merci pour ton aide JENCAL Smiley smile
Modifié par valttt (05 Sep 2017 - 15:07)