Problème PHP

Fermé
nicos91 - 12 sept. 2010 à 14:39
 brit - 27 sept. 2010 à 16:16
Bonjour à tous,


J'ai un formulaire en PHP permet à l'internaute d'entrer son Nom, Prénom, adresse mail, un message et de cocher parmi plusieurs boutons radio, la personne à qui il veut envoyer le message (webmaster, président, directeur...)

Le système fonctionne mais après plusieurs tests je constate des problèmes lorsque
j'utilise les caractères ' ou "" dans mon message.
Si j'écris ce message : Salut c'est bien toi ?
Je reçois dans ma boite mail : Salut c\'est bien toi ?

Plus étrange encore, si dans mon message j'utilise un caractère accentué
Par exemple : Salut je suis allé au ciné
Le message que je reçois dans ma boite mail est vide, rien n'apparait et en plus, parfois je
reçois le mail dans ma boite de courriers indésirables et parfois dans ma boite normale !

Comment faire pour résoudre ces problèmes très embêtants ?

Voici mon code PHP pour l'un des boutons radio coché (identique pour tous les autres) :

<?php

$erreur = NULL;
$info = NULL;

if(!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['email']) && !empty($_POST['message']))
{
	extract($_POST);
	if($_POST['RadioGroup1'] == 'webmaster')
	{
		if(preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#",$email))
		{
			$nom = htmlspecialchars(addslashes($nom));
			$prenom = htmlspecialchars(addslashes($prenom));
			$email = htmlspecialchars(addslashes($email));
			$destinataire = "nicolasschiff@hotmail.com";
			$sujet = "Formulaire de contact";
			$entete ='MIME-Version: 1.0'."\r\n";
			$entete .= 'Content-type: text/html; charset=utf-8'."\r\n";
			$entete .= 'From: '.$nom."\r\n".'Reply-To: '.$email."\r\n";
			$message = htmlentities($message, ENT_QUOTES, "UTF-8");
			$message = 
			"Vous venez de recevoir un nouveau message en provenance du site www.alsatiadrusenheim.fr <br />
			Nom : $nom <br />
			Prenom : $prenom <br />
			Email : $email <br />
			Message : $message";
			
			mail($destinataire, $sujet, $message, $entete);
			$info = "Votre message a bien été envoyé.";
			
			unset($_POST, $message, $nom, $prenom, $email);
		}
		else
		{
			$erreur="Adresse e-mail invalide";
		}
	}

...

Merci d'avance
Nicolas
A voir également:

2 réponses

avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 499
12 sept. 2010 à 19:45
Salut.

Pour l'antislashe (ou backslashe) qui se met avant les guillemets doubles et simples, c'est parce que l'option magic_quote_gpc est activée. Je te conseille de la désactiver et de protéger tes requêtes SQL.
https://www.php.net/manual/fr/security.magicquotes.disabling.php

Pour les accents, vérifie que l'encodage de ton fichier soit le même que celui utilisé par le navigateur (le navigateur utilise d'abord celui indiqué dans la meta, ensuite celui indiqué par le serveur (.htaccess ou configuration du serveur, ou encore header() en PHP) ). Essaye aussi en précisant l'encodage dans les entêtes de l'email.
0
c'est toi Guigui ? c'est tata
0