Aller au contenu
  • 0
nkiefer

Script formulaire contact

Question

nkiefer    6

Bonjour,

Le script ci-dessous fonctionne parfaitement en PHP 5.3, mais ne fonctionne plus en PHP 7.0 ... :(

<?php

// Formulaire de contact du site Lengrau Internet
// http://www.nkiefer.jed.st
//
// Copyright (C) Kiefer 2014
// Tous droits réservés


// MEMORISER LES CHAMPS DU FORMULAIRE DANS DES VARIABLES
// PREVENTION CONTRE VULNERABILITE XSS (CROSS-SITE SCRIPTING) 
$trans = array("&" => "et");
$nom = strip_tags(strtr($HTTP_POST_VARS['nom'], $trans));
$mail_exp = strip_tags(strtr($HTTP_POST_VARS['email'], $trans));
$sujet = strip_tags(strtr($HTTP_POST_VARS['sujet'], $trans));
$message = strip_tags(strtr($HTTP_POST_VARS['message'], $trans));
$secure_hp = strip_tags(strtr($HTTP_POST_VARS['contact_validation_id1'], $trans));


// ENCODER TEXTE EN UTF-8
$nom = utf8_decode($nom);
$sujet = utf8_decode($sujet);
$message = utf8_decode($message);


// MEMORISER L'IP DE L'EXPEDITEUR DU MESSAGE
$ip = $_SERVER['REMOTE_ADDR'];


// COUPE LES LIGNES DE PLUS DE 70 CARACTERES DANS LE MESSAGE
$message = wordwrap($message, 70, "\r\n");


// HEADER MAIL WEBMASTER
$headers = "MIME-Version: 1.0\r\n";
$headers = "Content-type: text/plain; charset=utf-8"."\r\n";
$headers = "From: $nom <$mail_exp>\r\nReply-to : $nom <$mail_exp>\nX-Mailer:PHP";


// HEADER MAIL EXPEDITEUR
$headers_exp = "MIME-Version: 1.0\r\n";
$headers_exp = "Content-type: text/plain; charset=utf-8"."\r\n";
$headers_exp = "From: $nom <$mail_exp>\r\nReply-to : $nom <$mail_exp>\nX-Mailer:PHP";


// PARAMETRES DU MESSAGE WEBMASTER
$subject = "[LENGRAU INTERNET] ".utf8_encode($sujet);
$mail_web = "xxx@nkiefer.jed.st";
$body = "Message envoyé depuis le formulaire de contact de Lengrau Internet."."\r\n\r\n"."-----"."\r\n\r\n"."* Nom .......... : ".utf8_encode($nom)."\r\n"."* Sujet ........ : ".utf8_encode($sujet)."\r\n"."* Email ........ : $mail_exp"."\r\n"."* Adresse IP ... : $ip"."\r\n\r\n"."-----"."\r\n\r\n".utf8_encode($message);


// PARAMETRES DU MESSAGE EXPEDITEUR
$subject_exp = "[LENGRAU INTERNET] Confirmation d'envoi de votre message : ".utf8_encode($sujet);
$body_exp = "Confirmation d'envoi de votre message (".utf8_encode($sujet).") envoyé depuis le formulaire de contact du site Lengrau Internet (www.nkiefer.jed.st)."."\r\n\r\n"."-----"."\r\n\r\n".utf8_encode($message)."\r\n\r\n"."-----"."\r\n\r\n"."Votre adresse IP ($ip) a été transmise au webmaster de Lengrau Internet.";


// DEBUT CONDITION CHAMPS VIDES
if (!empty($_POST['nom']) && !empty($_POST['email']) && !empty($_POST['sujet']) && !empty($_POST['message'])) {
	
	$adresse = htmlentities($_POST['$mail_exp']);

	// DEBUT CONDITION EMAIL INVALIDE
	if(VerifierAdresseMail($mail_exp)) {

		// DEBUT CONDITION ANTIBOT
		if(empty($_POST['contact_validation_id1']) && isset($_POST['contact_validation_id2'])) {

			// DEBUT CONDITION ENVOI
			if (mail($mail_web,$subject,utf8_decode($body),$headers) && mail($mail_exp,$subject_exp,utf8_decode($body_exp),$headers_exp)) {
				header("location:../contact.html?mail=1"); // Réussite de l'envoi
				}
				else {
					header("location:../contact.html?mail=-1"); // Echec de l'envoi
				}
			// FIN CONDITION ENVOI
			
		}
		else {
			header("location:../contact.html?mail=-8"); // Erreur si robot
		}
		// FIN CONDITION ANTIBOT
			
	}
	else {
		header("location:../contact.html?mail=-4"); // Erreur si email invalide
	}
	// FIN CONDITION EMAIL INVALIDE
}
else {
	header("location:../contact.html?mail=-2");  // Erreur si champs vides
}
// FIN CONDITION CHAMPS VIDES


// VERIFICATION DE LA SYNTAXE DE L'EMAIL
function VerifierAdresseMail($email)  
{  
	$syntaxe = "#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#"; 
	  
		if(preg_match($syntaxe,$email))  
			return true;  
		else  
			return false;  
}

?>

Je me retrouve avec une erreur "Erreur si email invalide" ou avec l'erreur "Echec de l'envoi".

C'est un script que j'ai écrit moi-même, mais là je ne vois pas ce qui cloche avec cette version de PHP. A priori les fonctions utilisées sont toujours d'actualité en PHP 7.0.

Quelqu'un a un petite idée du pourquoi du comment ?

Je vous remercie.

Cordialement.

Bon dimanche.

Nicolas

Partager ce message


Lien à poster
Partager sur d’autres sites

2 réponses à cette question

Recommended Posts

  • 0
nkiefer    6

Bon, je pense avoir trouvé le problème :

J'ai remplacé

$HTTP_POST_VARS['xxx']

par

$_POST['xxx']

et tout fonctionne.

Autre question :

Quelqu'un sait comment personnaliser (en PHP) le nom afficher (Web4all dans l'exemple ci-dessous) :

mail.png.3da643f3c8ad7a9d116f3cbe8563deaf.png

Je vous remercie.

Cordialement.

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant


×