Envoi avec mail() et la sécurité?
Bonjour, originaire de la pao, sur Mac depuis 1990, je m'intéresse (seulement) depuis quelque mois au html, css et php; (merci à votre site et au site du zéro qui m'ont été bien utile). J'ai donc fait un site pour un ami et j'aimerais savoir si ce script est sécurit ou si je dois rajouter certaines conditions pour éviter les injections ou autre désagréments. Tout fonctionne pour le moment, mis à part le header que je n'ose modifier...
Voici donc le script récupéré et modifié:
Modéré car non mis en forme
Réponses apportées à cette discussion
Bonjour,
Peux-tu nous redonner ton code en utilisant l'icône approprié pour le mettre en forme stp ?
Merci :)
<?
//on rend innofensives les données (seulement le html ici)
if(get_magic_quotes_gpc())
$_POST=array_map('stripslashes',$_POST);
$_POST=array_map('trim',$_POST);
foreach($_POST as $champ=>$valeur)
$_POST[$champ]=htmlspecialchars($valeur,ENT_NOQUOTES);
$date=date('d/m/Y H:i:s');
//on prépare les données pour envoyer le mail
$header='From: '.$destinataire."\r\n".'Content-type:text/plain;charset=iso-8859-1';
$subject='Demande de reservation';
$message='';
//tous les champs du formulaire sont ajoutés dans le message
foreach($_POST as $cle=>$valeur)
$message.=$cle.' : '.$valeur."\n";
//on envoie le mail en séparant les adresse des deux destinataires par une virgule et un espace dans le premier argument de la fonction
mail('bodytalk1@free.fr',$subject,$message,$header);
//on dirige vers le résultat, mais on petut le faire au début, seulement on ne verra pas les erreurs s'il y en a.
header('Location: http://www.exemple.com/expl.html');
?>
Ouups, désolé, vraiment newbie ...
Ah, j'oubliais le second inconvénient, c'est l'accentuation et les "ç" qui arrivent comme dans le code; pourtant il y a bien iso-8859?!?...
Super merci pour ta réponse; je suis vraiment un gros naze pour l'erreur 1/
Le fait est que, avec les guides ovh, cela fait une somme énorme d'infos à ingurgiter (heureusement que je parle anglais). Je retourne potasser.
@ bientôt
if (eregi("\r",$valeur) || eregi("\n",$valeur)){
die("Why ?? :(");
}
Re-bonjour, après quelques recherches, j'ai trouvé ce code, mais le "\r" et "\n" sont déjà dans le $header
donc est-ce deux choses différentes?
Désolé pour mon niveau 0 mais je sature avec toute ces infos :-(
Bonjour,
Ce code est obsolète... Il faut préférer un preg_match() ou bien un preg_replace() qui sont plus rapides.