5568 sujets

Sémantique web et HTML

Pages :
Bonjour, je suis nouveau ici.

j'ai créer un formulaire de contact en PHP.
j'ai créer un CAPTCHA qui consiste à indiqué le résultat (total en chiffes) de trois dés à jouer (format PNG) (aléatoire) donc un nombre de 3 à 18 dans le champ 'resultat'
si le résultat est correct, j'envoie un mail qui contient le message, et j'enregistre les champs dans une table de base de données.
or je reçois des messages indésirables avec la valeur zéro dans le champ 'resultat'.

merci de me dire comment joindre mon code



<?php
session_start();

error_reporting(E_ALL);
ini_set("display_errors", 1); //Affichage des erreurs

$erreur_resultat=false;

$nom_value='';
$email_value='';
$telephone_value='';
$message_value='';

if (isset($_POST['nom'])){$nom_value = htmlentities($_POST['nom']);}
if (isset($_POST['email'])){$email_value = htmlentities($_POST['email']);}
if (isset($_POST['telephone'])){$telephone_value = htmlentities($_POST['telephone']);}
if (isset($_POST['message'])){$message_value = htmlentities($_POST['message']);}

if (isset($_POST['resultat'])){
	
	if ($_POST['resultat'] == $_SESSION['resultat']){
		
		/* ********************************************************************** */
		/*                                                                        */
		/*    ICI ENVOIE DU MAIL Par fonction PHP email();						  */
		/*                                                                        */
		/* ********************************************************************** */
	
		if(mail($email_to,$email_subject, $email_message, $headers)==true){ //
		
			// Si Mail evoyé :
			
			// Enregistrement dans la base de données
			
			$servername = 'mabase.mysql.db';
            $username = 'mabase';
            $password = 'xxxxxxxxxxx';
            $base = mysqli_connect($servername, $username, $password, $username);
			$nom=$nom_value;
			$email=$email_value;
			$telephone=$telephone_value;
			$message=$message_value;
			$date=date("Y-m-d H:i:s"); 
			$contact="webmaster";
			if($piece_jointe){$piece="oui";}else{$piece="non";}
			$resultat=$_POST['resultat'];
			$query="INSERT INTO messages VALUES ('".$nom."','".$email."','".$telephone."','".$message."','".$date."','".$contact."','".$piece."','".$resultat."')";
			$result = mysqli_query($base,$query);
			
			// redirection vers la page réponse si mail envoyé
			
			header('Location: reponse.php'); //Redirection
		}
	}else{
		
		$erreur_resultat=true;
	}
}


// ============ CAPTCHA ========================

$de1_value = rand(1,6);
$de2_value = rand(1,6);
$de3_value = rand(1,6);
	
$_SESSION['resultat']=$de1_value+$de2_value+$de3_value;

?>

<!DOCTYPE html> 
<html lang="fr"> 

<head> 
	<meta charset="UTF-8"> 

	<link rel="stylesheet" href="contact.css" type="text/css"> 
	
	<script>
		function ferme(){	
			document.getElementById("modale").style.visibility = "hidden"
		}
	</script>
</head>


<body>

	<!-- ******************************** FENETRE MODALE ERREUR RESULTAT  ***************************************** -->
	<div id="modale" style="position:fixed; top:0px; left:0px; width:100%; height:100%; background-color: rgba(0, 0, 0, 0.4); z-index:200;display: flex;
    justify-content: center; font-family:sans-serif; align-items: center; visibility:
	<?php
		if($erreur_resultat){
			echo('visible');
		}else{
			echo('hidden');
		}	
	?>;">
	
		<div style="background-color: #fbfbbf;  width:400px; height:200px; border-radius: 5px;" class="shadow">
			<div style="text-align:right; background-color:#660000;">
				<button style="padding:5px;" onClick="ferme();">X</button>
			</div>
			<div style="text-align:center; padding:40px; font-size:16px;">
				nombre de points erroné !
				<br>
				<button onClick="ferme();" style="text-align:center; margin:20px; padding:5px;">OK</button>
			</div>
		</div>
	</div>
	
	<!-- ********************************************** CADRE PRINCIPAL ****************************************** -->
	<div id="mainFrame">
		
		<p style="margin-left:200px">
			<br>
			Formulaire de contact avec le webmaster du Petit Journal de Montbrison
			<br><br>
			<span style="font-family:tahoma, sans-serif;"> 
				<span style="color:red;">*</span>
				<span style="font-size:14px;"> champ obligatoire</span>
			</span>
		</p>	
		<br>
		
		<form name="formulaire" method="post"  action="test.php"  enctype="multipart/form-data">
			<div style="margin-bottom:10px;">
				<label for="nom"><span style="color:red;">*</span>Prénom, Nom :</label>
				<input type="text" id="nom" name="nom" value="<?php echo $nom_value;?>" maxlength="60" required>
			</div>
			<div style="margin-bottom:10px;">
				<label for="email"><span style="color:red;">*</span>e-mail :</label>
				<input type="email" id="email" name="email" value="<?php echo $email_value;?>" maxlength="80" required>
			</div>
			<div style="margin-bottom:10px;">
				<label for="telephone">Téléphone :</label>
				<input type="tel" id="telephone" name="telephone" value="<?php echo $telephone_value;?>" maxlength="30">
			</div>
			<div style="margin-bottom:10px;">
				<label for="msg"><span style="color:red;">*</span>Message :</label>
				<textarea id="msg" name="message" required><?php echo $message_value;?></textarea>
			</div>
			<div style="margin-bottom:10px;">
				<label for="fichier">Pièce jointe :</label>
				<input type="file" id="fichier" name="fichier">
			</div>
			
			<div style="font-family:sans-serif; font-size:14px;  margin-left:300px;">
			Afin de vérifier que vous n'êtes pas un robot, merci de répondre à la question ci-dessous:
			
			</div>
			
			<div style="margin-bottom:10px; margin-left:300px;">
			
				<span style="font-family:sans-serif; font-size:14px;">
					<b>Combien de points sur les dés ?  </b>
				</span>
				
				<img src="de_<?php echo $de1_value;?>.png" width="30" style="margin-right:5px;">
				<img src="de_<?php echo $de2_value;?>.png" width="30" style="margin-right:5px;">
				<img src="de_<?php echo $de3_value;?>.png" width="30" style="margin-right:5px;">

				<span style="font-family:sans-serif; font-size:14px;">
					(réponse en chiffres) 
				</span>
				<input style="width: 50px;"type="text" id="resultat" name="resultat" maxlength="10" required>
				<span style="color:red;"><b>
					<?php
						if ($erreur_resultat==true)  {
							echo " ERREUR !";
						}
					?>
				</b></span>
				
			</div>
					
			
			<div>
				<button class="button" style="height:40px; width:300px" type="submit" >Envoyer le message</button>
			</div>
		
		</form>
		<br><br>
		
	</div>
	<!-- ****************************************************  fin du cadre principal  **************************************************** -->

Modifié par gcyrillus (02 Jul 2023 - 15:29)
Bonjour,
un petit essai (pour tester le captcha).
Cordialement.

fichier index.php

<?php
session_start();

function captcha(){
    $_SESSION['de1'] = rand(1,6);
    $_SESSION['de2'] = rand(1,6);
    $_SESSION['de3'] = rand(1,6);
    $_SESSION['resultat'] = strval($_SESSION['de1'] + $_SESSION['de2'] + $_SESSION['de3']);
}

$erreur_resultat=false;

if (isset($_POST['nom'])){$nom_value = htmlentities($_POST['nom']);}
if (isset($_POST['email'])){$email_value = htmlentities($_POST['email']);}
if (isset($_POST['telephone'])){$telephone_value = htmlentities($_POST['telephone']);}
if (isset($_POST['message'])){$message_value = htmlentities($_POST['message']);}

if (isset($_POST['resultat'])){
    if ($_POST['resultat'] == $_SESSION['resultat']){
        // ICI ENVOIE DU MAIL Par fonction PHP email();
        // if(mail($email_to,$email_subject, $email_message, $headers)==true){ //
        // Si Mail evoyé : ...
        
        //header('Location: reponse.php'); 
        //die();
        $redirect = 'redirection vers reponse.php est OK';
        
    } else {$erreur_resultat = true; captcha();}
} else {captcha();}
?>

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="style.css">
</head>

<body>

<div id="mainFrame">
    
    <div id="container">
        <form name="formulaire" method="post" action="index.php">
            <label for="nom"><span class="red">* </span>Nom :</label>
            <input type="text" id="nom" name="nom" value="Martin">

            <div id="verif">
                Afin de vérifier que vous n'êtes pas un robot, merci de répondre à la question ci-dessous: <br>
                <span><b>Quelle est la somme des 3 dés ?</b></span><br>
                <?= $_SESSION['de1']; ?>
                <?= $_SESSION['de2'];?>
                <?= $_SESSION['de3'];?>
            </div>
            
            <label for="reponse">(réponse en chiffres)</label>
            <input type="text" id="resultat" name="resultat" required>
            
            <span class="red"><b><?php if ($erreur_resultat==true){echo " ERREUR !";} ?></b></span>
            <br>

            <button class="button" type="submit" >Envoyer le message</button>
        </form>
    </div>

    <div id="redirect">
        <?php 
            if(isset($redirect)){echo $redirect;}
        ?>
    </div>

</div>

</body>
</html>


et fichier style.css


body{
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

#mainFrame{
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

#container{margin-left: 20px;}
label{display: block;}
.red{color: red;}
#verif{margin-top: 20px; margin-bottom: 20px;}
#resultat{width: 100px;}

button{height: 40px; width:300px; margin-top: 20px;}

#redirect{margin-top: 20px; font-weight: bold;}

Modifié par alain_47 (02 Jul 2023 - 10:24)
bonjour,
ce que je ne comprend pas, c'est comment le formulaire peut être envoyé avec une valeur de résultat égale à 0 (zéro)
cordialement
pas assez d'info.

Le pble vient-il du resultat après captcha, de la base de donnée, d'une initialisation de variable...

Vous devez tester chaque partie pour essayer de savoir d'où vient le problème.
Modérateur
alaindu26 a écrit :
bonjour,
ce que je ne comprend pas, c'est comment le formulaire peut être envoyé avec une valeur de résultat égale à 0 (zéro)
cordialement


C'est étonnant en effet, comme il y a 3 (dés), peut-être aussi vérifier si le résultat est supérieur à 2 .

Je ne suis pas un expert en sécurité, mais peut-être aussi vérifier qu'une session et une clé/valeur passée en paramètre dans ton URL ne soient pas prisent en compte par ton script , configuration de PHP , et du coup générée avant le chargement de ta page au profit d'un spammeur Smiley smile
Je pense notamment session.use_trans_sid , sans vouloir te faire peur, je ne suis pas expert!

Cdt
merci gcyrillus
je peux en effet contrôler que le résultat et supérieur à 2 ( et aussi pourquoi pas aussi inférieur à 19 )
je ne connais pas session.use_trans_sid.
bonjour,
j'enregistre dans une base de données la variables $_POST['resultat'] qui correspond au résultat saisi par le client et la variable $_SESSION['resultat'] qui est égale à la somme des trois dés (aléatoire de 3 à 18)
si $_SESSION['resultat'] est égal à $_POST['resultat'] le formulaire est validé.
ce que je ne comprend pas c'est comment un robot (ou humain) peut modifié ma variable de session $_SESSION['resultat'] avec une valeur à 0 (zéro)
est-ce possible ?
Modifié par alaindu26 (03 Jul 2023 - 19:05)
Bonjour,
Vous arrivez à enregistrer ? J'aurai pensé que
if(mail($email_to,$email_subject, $email_message, $headers)==true){
n'était pas vérifié ($email_to,$email_subject, $email_message et $headers n'étant pas définis) ?
a écrit :
ce que je ne comprend pas c'est comment un robot (ou humain) peut modifié ma variable de session $_SESSION['resultat'] avec une valeur à 0 (zéro)
--> Quand, comment détectez vous ce phénomène ?
bonjour,
dans mon code les variables $email_to,$email_subject, $email_message et $headers sont définis.
je détecte ce phénomène car j’enregistre les champs du formulaire et la variable $_SESSION['resultat'] dans une table de base de données.
Re,
a écrit :
dans mon code les variables $email_to,$email_subject, $email_message et $headers sont définis.
--> Je ne vois pas leur définition dans le code fourni ? Est-il possible d'avoir le code complet, non expurgé ?

<?php
session_start();

error_reporting(E_ALL);
ini_set("display_errors", 1); //Affichage des erreurs

$erreur_resultat=false;

$nom_value='';
$email_value='';
$telephone_value='';
$message_value='';

if (isset($_POST['nom'])){$nom_value = htmlentities($_POST['nom']);}
if (isset($_POST['email'])){$email_value = htmlentities($_POST['email']);}
if (isset($_POST['telephone'])){$telephone_value = htmlentities($_POST['telephone']);}
if (isset($_POST['message'])){$message_value = htmlentities($_POST['message']);}

if (isset($_POST['resultat'])){
	
	if (($_POST['resultat'] == $_SESSION['resultat'])and ($_POST['resultat']>2)){
	
		//Eviter les insertions de scripts dans le cas d'un e-mail HTML
		$nom = htmlentities($_POST['nom']);
		$telephone = htmlentities($_POST['telephone']);
		$email_from = htmlentities($_POST['email']);
		$message = htmlentities($_POST['message']);

		$texte="";
		$texte = "Nom => ".$nom."\n";
		$texte = $texte."téléphone => ".$telephone."\n";
		$texte = $texte."e-mail => ".$email_from."\n";
		$texte = $texte."Message => ".$message."\n";

		//Verifie si le fournisseur prend en charge les r
		if(preg_match("#@(hotmail|live|msn).[a-z]{2,4}$#", $email_from)){
			$passage_ligne = "\n";
		}else{
			$passage_ligne = "\r\n";
		}

		$email_to = "webmaster@petit-journal-montbrison.com"; //Destinataire **********************************************
//      *****************************************************************************************************
		
		$email_subject = "Message de ".$nom_value." pour le webmaster"; //Sujet du mail
		
		
		$boundary = md5(rand()); // clé aléatoire de limite

		function clean_string($string) {
			$bad = array("content-type","bcc:","to:","cc:","href");
			return str_replace($bad,"",$string);
		}

		$headers = "From: \"".$nom."\"<".$email_from.">" . $passage_ligne; //Emetteur
		$headers.= "Reply-to: \"".$nom."\" <".$email_from.">" . $passage_ligne; //Emetteur
		$headers.= "MIME-Version: 1.0" . $passage_ligne; //Version de MIME
		$headers.= 'Content-Type: multipart/mixed; boundary='.$boundary .' '. $passage_ligne; //Contenu du message (alternative pour deux versions ex:text/plain et text/html

		$email_message = '--' . $boundary . $passage_ligne; //Séparateur d'ouverture
		$email_message .= "Content-Type: text/plain; charset='utf-8'" . $passage_ligne; //Type du contenu
		$email_message .= "Content-Transfer-Encoding: 8bit" . $passage_ligne; //Encodage
		$email_message .= $passage_ligne .clean_string($texte). $passage_ligne; //Contenu du message

		//Pièce jointe
		
		$piece_jointe=false;
		
		if(isset($_FILES["fichier"]) &&  $_FILES['fichier']['name'] != ""){ //Vérifie sur formulaire envoyé et que le fichier existe
			$nom_fichier = $_FILES['fichier']['name'];
			$source = $_FILES['fichier']['tmp_name'];
			$type_fichier = $_FILES['fichier']['type'];
			$taille_fichier = $_FILES['fichier']['size'];
                    
			if($nom_fichier != ".htaccess"){ //Vérifie que ce n'est pas un .htaccess
				if (true==true){
				//if($type_fichier == "image/jpeg" 
                //|| $type_fichier == "image/pjpeg" 
                //|| $type_fichier == "application/pdf"
				//|| $type_fichier == "application/msword"){ //Soit un jpeg soit un pdf soit doc
                 
					if ($taille_fichier <= 2097152) { //Taille supérieure à Mo (en octets)
						$tabRemplacement = array("é"=>"e", "è"=>"e", "à"=>"a"); //Remplacement des caractères spéciaux
                    
						$handle = fopen($source, 'r'); //Ouverture du fichier
						$content = fread($handle, $taille_fichier); //Lecture du fichier
						$encoded_content = chunk_split(base64_encode($content)); //Encodage
						$f = fclose($handle); //Fermeture du fichier
                                
						$email_message .= $passage_ligne . "--" . $boundary . $passage_ligne; //Deuxième séparateur d'ouverture
						$email_message .= 'Content-type:'.$type_fichier.';name="'.$nom_fichier.'"'. $passage_ligne; //Type de contenu (application/pdf ou image/jpeg)
						$email_message .='Content-Disposition: attachment; filename="'.$nom_fichier.'"'. $passage_ligne; //Précision de pièce jointe
						$email_message .= 'Content-transfer-encoding:base64'. $passage_ligne; //Encodage
						$email_message .= $passage_ligne; //Ligne blanche. IMPORTANT !
						$email_message .= $encoded_content. $passage_ligne; //Pièce jointe
						
						$piece_jointe=true;

					}else{
						//Message d'erreur
						$email_message .= $passage_ligne ."L'utilisateur a tenté de vous envoyer une pièce jointe mais celle ci était superieure à 2Mo.". $passage_ligne;
					}
				}else{
					//Message d'erreur
					$email_message .= $passage_ligne ."L'utilisateur a tenté de vous envoyer une pièce jointe mais elle n'était pas au bon format.". $passage_ligne;
				}
			}else{
				//Message d'erreur
				$email_message .= $passage_ligne ."L'utilisateur a tenté de vous envoyer une pièce jointe .htaccess.". $passage_ligne;
			}
		}
		
		
		$email_message .= $passage_ligne . "--" . $boundary . "--" . $passage_ligne; //Séparateur de fermeture

	
		if(mail($email_to,$email_subject, $email_message, $headers)==true){ //si Envoi du mail
		
			
			
			
			// ************************************** connexion dbase ************************************
			$servername = 'mabase.mysql.db';
            $username = 'mabase';
            $password = 'xxxxxxxx';
            $base = mysqli_connect($servername, $username, $password, $username);
			$nom=$nom_value;
			$email=$email_value;
			$telephone=$telephone_value;
			$message=$message_value;
			$date=date("Y-m-d H:i:s"); 
			$contact="webmaster";
			if($piece_jointe){$piece="oui";}else{$piece="non";}
			$resultat=$_POST['resultat'];
			$captcha=$_SESSION['resultat'];
$query="INSERT INTO messages VALUES ('".$nom."','".$email."','".$telephone."','".$message."','".$date."','".$contact."','".$piece."','".$resultat."','".$captcha."')";
			$result = mysqli_query($base,$query);
			
			header('Location: reponse.php'); //Redirection
		}
	}else{
		$erreur_resultat=true;
	}
}


// ============ CAPTCHA ========================

$de1_value = rand(1,6);
$de2_value = rand(1,6);
$de3_value = rand(1,6);
	
$_SESSION['resultat']=$de1_value+$de2_value+$de3_value;



?>






<!DOCTYPE html> 
<html lang="fr"> 

<head> 
	<meta charset="UTF-8"> 
	<title>Le Petit Journal de Montbrison - contact webmaster</title>
	<link rel="icon" type="image/png" href="images/favicon.png">
	<link rel="stylesheet" href="styles/main.css" type="text/css"> 
	<link rel="stylesheet" href="styles/contact.css" type="text/css"> 
	
	<script>
		function ferme(){	
			document.getElementById("modale").style.visibility = "hidden"
		}
	</script>
</head>


<body>

	<!-- ******************************** FENETRE MODALE ****************************************** -->
	<div id="modale" style="position:fixed; top:0px; left:0px; width:100%; height:100%; background-color: rgba(0, 0, 0, 0.4); z-index:200;display: flex;
    justify-content: center; font-family:sans-serif; align-items: center; visibility:
	<?php
		if($erreur_resultat){
			echo('visible');
		}else{
			echo('hidden');
		}	
	?>;">
	
		<div style="background-color: #fbfbbf;  width:400px; height:200px; border-radius: 5px;" class="shadow">
			<div style="text-align:right; background-color:#660000;">
				<button style="padding:5px;" onClick="ferme();">X</button>
			</div>
			<div style="text-align:center; padding:40px; font-size:16px;">
				nombre de points erroné !
				<br>
				<button onClick="ferme();" style="text-align:center; margin:20px; padding:5px;">OK</button>
			</div>
		</div>
	</div>


	<!-- ********************************************** ENTETE ************************************************** -->
	<div id="header" class="grosTitre">	
		<h1><img src="images/titre_1.png" alt="Le petit journal de Montbrison" title="Le petit journal de Montbrison"></h1>
	</div>
	
	<!-- ********************************************** CADRE PRINCIPAL ****************************************** -->
	<div id="mainFrame">
		<div style="text-align:center; margin-bottom:10px;">
			<b><a href="index.htm">Retour à l'accueil</a></b>
		</div>
		<p style="margin-left:200px">
			<br>
			Formulaire de contact avec le webmaster du Petit Journal de Montbrison
			<br><br>
			<span style="font-family:tahoma, sans-serif;"> 
				<span style="color:red;">*</span>
				<span style="font-size:14px;"> champ obligatoire</span>
			</span>
		</p>	
		<br>
		
		<form name="formulaire" method="post"  action="contact_webmaster.php"  enctype="multipart/form-data">
			<div style="margin-bottom:10px;">
				<label for="nom"><span style="color:red;">*</span>Prénom, Nom :</label>
				<input type="text" id="nom" name="nom" value="<?php echo $nom_value;?>" maxlength="60" required>
			</div>
			<div style="margin-bottom:10px;">
				<label for="email"><span style="color:red;">*</span>e-mail :</label>
				<input type="email" id="email" name="email" value="<?php echo $email_value;?>" maxlength="80" required>
			</div>
			<div style="margin-bottom:10px;">
				<label for="telephone">Téléphone :</label>
				<input type="tel" id="telephone" name="telephone" value="<?php echo $telephone_value;?>" maxlength="30">
			</div>
			<div style="margin-bottom:10px;">
				<label for="msg"><span style="color:red;">*</span>Message :</label>
				<textarea id="msg" name="message" required><?php echo $message_value;?></textarea>
			</div>
			<div style="margin-bottom:10px;">
				<label for="fichier">Pièce jointe :</label>
				<input type="file" id="fichier" name="fichier">
			</div>
			
			<div style="font-family:sans-serif; font-size:14px;  margin-left:300px;">
			Afin de vérifier que vous n'êtes pas un robot, merci de répondre à la question ci-dessous:
			
			</div>
			
			<div style="margin-bottom:10px; margin-left:300px;">
			
				<span style="font-family:sans-serif; font-size:14px;">
					<b>Combien de points sur les dés ?  </b>
				</span>
				
				<img src="images/de_<?php echo $de1_value;?>.png" width="30" style="margin-right:5px;">
				<img src="images/de_<?php echo $de2_value;?>.png" width="30" style="margin-right:5px;">
				<img src="images/de_<?php echo $de3_value;?>.png" width="30" style="margin-right:5px;">

				<span style="font-family:sans-serif; font-size:14px;">
					(réponse en chiffres) 
				</span>
				<input style="width: 50px;"type="text" id="resultat" name="resultat" maxlength="10" required>
				<span style="color:red;"><b>
					<?php
						if ($erreur_resultat==true)  {
							echo " ERREUR !";
						}
					?>
				</b></span>
				
			</div>
					
			
			<div>
				<button class="button" style="height:40px; width:300px" type="submit" >Envoyer le message</button>
			</div>
		
			
		
		
		</form>
		<br><br>
		
	</div>
	<!-- ****************************************************  fin du cadre principal  **************************************************** -->
	
	
	
</body>

Modifié par alaindu26 (04 Jul 2023 - 15:58)
D'accord, si vous passez par le mail et l'enregistrement c'est que
if (($_POST['resultat'] == $_SESSION['resultat'])and ($_POST['resultat']>2))
est vérifié. Est-ce que la valeur de $_POST['resultat'] stockée dans la table messages est correcte ? Peut-on voir la structure de cette table ?
nom varchar(100)
email varchar(80)
telephone varchar(30)
message text
date Index datetime
contact varchar(10)
piece varchar(3)
resultat int(2)
captcha int(2)
Donc comment sont valorisées resultat et captcha ?
De mon coté, je viens de faire un test en local (sans envoyer de mail) et ça marche ? upload/1688484175-1173-capture.png
Modifié par comar91 (04 Jul 2023 - 17:23)
j'ai bien reçu le message avec pour résultat =12 et captcha = 12 donc ça marche
mais ce que je n'arrive pas à expliquer, c'est que pour les messages indésirables le résultat est = 0 (zéro) et le captcha =0 (zéro) . captcha étant la valeur aléatoire de $_SESSION['resultat'] donc une valeur supérieure à 2 et inférieure à 19.
je pense avoir résolut mon problème en ajoutant la condition "
 if $_POST['resultat']>2

merci de votre aide.
Modifié par alaindu26 (04 Jul 2023 - 19:15)
Et quand il y a 0 dans captcha, qu'y a t'il dans les autres colonnes ? Pensez-vous que les indésirables proviennent de robots ou autres malveillants ?
exemple de message reçu :
---------------------------------------------------------------------------------------------------
nom => Roberteak
telephone => 88963279438
email => rofaw13361@pubpng.com
message => " MESSAGE EN RUSSE" et
https://bookmarkvids.com/story15695944/not-known-factual-statements-about-network-busy
https://myeasybookmarks.com/story386485/not-known-factual-statements-about-network-busy
------------------------------------------------------------------------------------------------
Modifié par alaindu26 (04 Jul 2023 - 20:05)
Bonjour Alain,
Vous pourriez peut-être utiliser un champs 'pot de miel' afin de 'bloquer' un peu les bots malveillants ?
bonjour,
le pot de miel est aussi une solution à essayer.
je vais déjà attendre le résultat de la condition
if $_POST['resultat']>2

qui a l'air de fonctionner jusqu'à present.
Ceci restera une méthode empirique qui n'explique pas comment un utilisateur peut changer la valeur d'une variable session $_SESSION['resultat']
Meilleure solution