Jump to content
  • 0
Sign in to follow this  
nkiefer

Script formulaire contact

Question

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

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

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.

Share this post


Link to post
Share on other sites
  • 1

Normalement, c'est géré dans les HEADERS , mais la en l’occurrence, je pense que c'est ton client mail qui connait le contact et l'a enregistré de cette façon :) 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×