Erreur php

Fermé
altair - 18 avril 2010 à 08:55
rudak Messages postés 587 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 - 18 avril 2010 à 13:09
Bonjour, je viens vers vous pour une aide

j'ai créer un formulaire de contact donc voici le code HTLM :

-<form id="contact" method="post" action="traitement_formulaire.php">
<fieldset><legend>Vos coordonnées</legend>
<p><label for="nom">Nom :</label><input type="text" id="nom" name="nom" tabindex="1" /></p>
<p><label for="email">Email :</label><input type="text" id="email" name="email" tabindex="2" /></p>
</fieldset>

<fieldset><legend>Votre message :</legend>
<p><label for="objet">Objet :</label><input type="text" id="objet" name="objet" tabindex="3" /></p>
<p><label for="message">Message :</label><textarea id="message" name="message" tabindex="4" cols="30" rows="8"></textarea></p>
</fieldset>

<div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /></div>
</form>

et le code PHP :

<?php
/*
********************************************************************************************
CONFIGURATION
********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = '......@hotmail.fr.tld';

// copie ? (envoie une copie au visiteur)
$copie = 'oui'; // 'oui' ou 'non'

// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu !";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";

// Messages d'erreur du formulaire
$message_erreur_formulaire = "Vous devez d'abord <a href=\"contact.html\">envoyer le formulaire</a>.";
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

/*
********************************************************************************************
FIN DE LA CONFIGURATION
********************************************************************************************
*/

// on teste si le formulaire a été soumis
if (!isset($_POST['envoi']))
{
// formulaire non envoyé
echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
}
else
{
/*
* cette fonction sert à nettoyer et enregistrer un texte
*/
function Rec($text)
{
$text = trim($text); // delete white spaces after & before text
if (1 === get_magic_quotes_gpc())
{
$stripslashes = create_function('$txt', 'return stripslashes($txt);');
}
else
{
$stripslashes = create_function('$txt', 'return $txt;');
}

// magic quotes ?
$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
$text = nl2br($text);
return $text;
};

/*
* Cette fonction sert à vérifier la syntaxe d'un email
*/
function IsEmail($email)
{
$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
return (eregi($pattern,$email)) ? true : false;
};

// formulaire envoyé, on récupère tous les champs.
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';

// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré

if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
{
// les 4 variables sont remplies, on génère puis envoie le mail
$headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";

// envoyer une copie au visiteur ?
if ($copie == 'oui')
{
$cible = $destinataire.','.$email;
}
else
{
$cible = $destinataire;
};

// Remplacement de certains caractères spéciaux
$message = str_replace("'","'",$message);
$message = str_replace("’","'",$message);
$message = str_replace(""",'"',$message);
$message = str_replace('<br>','',$message);
$message = str_replace('<br />','',$message);
$message = str_replace("<","<",$message);
$message = str_replace(">",">",$message);
$message = str_replace("&","&",$message);

// Envoi du mail
if (mail($cible, $objet, $message, $headers))
{
echo '<p>'.$message_envoye.'</p>'."\n";
}
else
{
echo '<p>'.$message_non_envoye.'</p>'."\n";
};
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<p>'.$message_formulaire_invalide.' <a href="contact.html">Retour au formulaire</a></p>'."\n";
};
}; // fin du if (!isset($_POST['envoi']))
?>

dès l'envoi du formulaire j'ai un message d'erreur :

Warning: mail() has been disabled for security reasons in /var/www/r/rb/rbu/rbureautique.perso.sfr.fr/public_html/traitement_formulaire.php on line 101

L'envoi du mail a échoué, veuillez réessayer SVP.

Je cherche mais je ne trouve pas la solution donc je fais appel à vos connaissances et me dire quelle est la démarche à faire :

la ligne 101 corresponds à celle-ci : if (mail($cible, $objet, $message, $headers))

peut être mettre le code HTML et PHP dans un dossier ou les mettre tout deux dans la racine du site..

Merci de vos réponses

3 réponses

Py_rex Messages postés 241 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 22 juin 2015 52
Modifié par Py_rex le 18/04/2010 à 10:53
Bonjour,

Il suffit de lire le message d'erreur : la fonction mail (celle que vous appelez dans la ligne 101) a été désactivé (pour des raisons de sécurité). Il faut donc contacter votre hébergeur pour voir s'il veut bien l'activer de nouveau.
1
rudak Messages postés 587 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
18 avril 2010 à 11:31
a quoi ca sert ca exactement ?

$message = str_replace("<","<",$message); 
$message = str_replace(">",">",$message); 
$message = str_replace("&","&",$message);
0
Py_rex Messages postés 241 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 22 juin 2015 52
18 avril 2010 à 11:38
Bonjour

str_replace(search, replace, subject);

str_replace retourne une chaîne ou un tableau, dont toutes les occurrences de search (le premier paramètre) dans subject le troième paramètre) ont été remplacées par replace (le deuxième paramètre).

Comme je n'ai pas pondu ce code, il faudrait mieux demander à son auteur ce qu'il a voulu faire ...

Ce serait plus judicieux de remplacer tout ça par :
$message = htmlentities($_POST['message'], ENT_QUOTES);
Un petit coup de google vous expliquera tout ça ...
0
rudak Messages postés 587 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
18 avril 2010 à 13:09
nan mais je connai bien la fonction =)
mais si tu change une chaine par la meme chaine c'est pas tres utile...
0