Bonjour,
j'utilise depuis plusieurs années un script php qui me permet de recevoir par email les informations d'un formulaire html
Mon hébergeur me conseil vivement de passer en php7
Quand je règle chez mon hébergeur l'option sur php7, mon script php renvoie l'erreur suivante mais j'y connais vraiment pas grand chose en php, quelqu'un peut il m'aider à savoir ce qui cloche?
Merci de votre aide!
Voilà l'erreur recu quand j'envoie le formulaire avec mon hebergeur réglé en php7:
Fatal error: Uncaught Error: Call to undefined function eregi() in /home/clients/9c699b5756b813e5fc08e42765026348/web/2015form-cible-sta.php:65 Stack trace: #0 /home/clients/9c699b5756b813e5fc08e42765026348/web/2015form-cible-sta.php(166): pattern_grep('3', Array) #1 {main} thrown in /home/clients/9c699b5756b813e5fc08e42765026348/web/2015form-cible-sta.php on line 65
Mon php: (qui fonctionne sans problème en php5)
<?
header( 'content-type: text/html; charset=utf-8' );
$post = NULL;
$http = NULL;
$message ="";
########################################################################
# #
# PARAMETRES #
# #
########################################################################
# Domaines Autorisés ==> sécurité
#
$auth = "*@travauxacrobatiques.ch";
# Les adresses emails qui doivent etre interdites ==> securite
#
$deny = "nobody@*, anonymous@*, postmaster@*, [email protected]";
#
########################################################################
########################################################################
#
# Functions
#
# Supprime les espaces (ou d'autres caractères) en début et fin de chaîne
#
function array_trim(&$value, $key) {
$value = trim($value);
}
# Retourne le hostname
#
function get_domain($string) {
if (eregi('\.?([a-zA-Z0-9\-]+\.?[a-zA-Z0-9\-]+)$', $string, $values)) {
return $values[1];
}
return NULL;
}
# Basic pattern matching on an entire array
#
function pattern_grep($input, $array) {
foreach ($array as $value) {
$value = addcslashes($value, '^.[]$()|{}\\');
$value = str_replace('*', '.*', $value);
$value = str_replace('?', '.?', $value);
$value = str_replace('+', '.+', $value);
if (eregi('^' . $value . '$', $input)) {
return TRUE;
}
}
return FALSE;
}
# Fonction qui affiche les erreurs et fait la mise en page du message
#
function error_msg($error, $required = FALSE) {
global $post;
echo "<html>\r\n";
echo "\t<META content=\"width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;\" name=\"viewport\">\r\n";
echo "\t\t<head>\r\n";
echo "\t<title>Erreur sur le formulaire</title>\r\n";
echo "\t<style type=\"text/css\">
div.centre {text-align: center;
font-family: Helvetica, Arial;
padding-top: 50px;
padding-right: 10px;
padding-left: 10px;
font-size: 16px;
max-width: 630px;
margin:auto;
}
p{
text-align: center;
}
p.error{
color:black;
}
</style>\r\n";
echo "\t</head>\r\n";
echo "\t<body>\r\n";
echo "\t<div class=\"centre\"><p class=\"error\">${error}</p><p><a href=\"javascript: history.back();\">Retourner au formulaire</a></p></div>\r\n";
echo "\t</body>\r\n";
echo "\t</html>\r\n";
exit();
}
#
########################################################################
########################################################################
#
# Programme Principal
#
if ($_SERVER['REQUEST_METHOD'] == 'POST' ) { // SECURITE : on teste si on est bien en POST et que ce n'est pas un robot
$post = array( // on défini les varibales que l'on code en dur
'recipient' => $_POST['recipient'],
'email' => $_POST['email'],
'env_report' => $_POST['env_report'],
'required' => $_POST['required'],
'subject' => $_POST['subject'],
'redirect' => $_POST['redirect'],
'Envoi' => $_POST['Envoi'],
);
$http = array(
'REMOTE_USER' => $_SERVER['REMOTE_USER'],
'REMOTE_ADDR' => $_SERVER['REMOTE_ADDR'],
'HTTP_USER_AGENT' => $_SERVER['HTTP_USER_AGENT']
);
if (($auth = explode(',', $auth))) {
array_walk($auth, 'array_trim');
}
if (($deny = explode(',', $deny))) {
array_walk($deny, 'array_trim');
}
# On teste si le champs caché jedoisetrevide, si non, c'est un robot
if(!empty($_POST['jedoisetrevide'])){
exit("Bye Robot, ce formulaire n'est pas pour toi... ");
}
# On teste les champs requis, si plusieurs champs sont requis il faut les séparer par une virgule et sans espace, par exemple: "TEL,DEMANDE_PARTICULIERE", de plus les rubriques ne peuvent pas avoir d_espace_dans_leur_nom
if ((!empty($post['required'])) && ($list = explode(',', $post['required']))) {
foreach ($list as $value) {
if (!empty($value) && empty($_POST["$value"])) {
error_msg("Veuillez remplir la rubrique ".$value, TRUE);
}
}
}
# On teste l'email fourni
#(interdit un email qui serait dans $deny, tout en haut du script ligne 24. Précéder les lignes de dièse pour le rendre inactif. J'ai changé error_msg par exit, 2 lignes ci-dessous, afin que le message d'erreur ne contienne pas le lien Retourner au formulaire.
if (pattern_grep($post['email'], $deny)) {
exit("L'email rentré ne peut pas être utilisé. Retournez au formulaire en utilisant le bouton précédent de votre navigateur");
}
#
#(oblige la bonne redaction de l email mais ici non actif car cet ordre est précédé de dièse, enlever les dièses ci-dessous pour l'activer)
# if (!eregi('^([a-zA-Z0-9\.\_\-]+)\@((([a-zA-Z0-9\-]+)\.)+([a-zA-Z]+))$', $post['email'])) {
# error_msg("L'email doit être du type [email protected].");
# }
# On teste si l'adresse recipient est correcte et autorisé dans Domaines Autorisés de la ligne 18
#
if ((!empty($post['recipient'])) && ($list = explode(',', $post['recipient']))) {
array_walk($list, 'array_trim');
foreach ($list as $value) {
if (!eregi('^([a-zA-Z0-9\.\_\-]+)\@((([a-zA-Z0-9\-]+)\.)+([a-zA-Z]+))$', $value)) {
error_msg("L'adresse est invalide.");
}
if (!pattern_grep($value, $auth)) {
error_msg("Cette adresse n'est pas autorisé.");
}
}
}
else {
error_msg("Une erreur inconnue est survenue lors de la vérification de l'adresse recipient.");
}
# On crée le message
#
$subject = $post['subject'];
foreach ($_POST as $key => $value) {
if (!array_key_exists($key, $post) && $value!="") {
$key=str_replace('_', ' ', $key); # On remplace le underscore par un espace vide
$message .= "${key}: ${value}\r\n\r\n";
}
}
if (!empty($post['env_report'])) {
if (($list = explode(',', $post['env_report']))) {
array_walk($list, 'array_trim');
foreach ($list as $value) {
if (array_key_exists($value, $http)) {
$message .= "${value}:\r\n" . $http["$value"] . "\r\n\r\n";
}
}
}
}
if(mail($post['recipient'], $subject, $message, "From: " . $post['email'] . "\r\nReply-To: " . $post['email'] . "\r\nX-Mailer: PHP FormMail")){
header('Location: ' . $_POST['redirect']);
}
else {
error_msg("Un problème est survenu lors de l'envoi de mail.");
}
} //fin du IF Programme principale
else {
error_msg("La mauvaise méthode a été appelée.");
}
?>