Rechercher : dans
Par :

[PHP] Formulaire de contact non fonctionnant

Dernière réponse le 4 oct 2009 à 19:23:40 SilvioB^^, le 4 oct 2009 à 17:53:45 
 Signaler ce message aux modérateurs

Bonjour, j'utilisais avant sur mon ancien site un formulaire de contact tout fait, en PHP.
Il fonctionnait parfaitement bien.

Cependant je change d'hébergement, je refais un site, et là, le formulaire ne fonctionne plus.

Pourtant (normalement) la fonction mail() est incluse dans cet hébergement.

Pourquoi alors sa ne marche pas ?


Merci.

Meilleures réponses pour « [PHP] Formulaire de contact non fonctionnant » dans :
[Webmaster] Un formulaire de contact pour votre site VoirCe formulaire permet d'avoir une page pour être contacté sur son site, sans utiliser de logiciel de messagerie. La personne qui vous contacte indique son adresse, l'objet du message et son message (évidemment). Le code est une version...
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...

1

avion-f16, le 4 oct 2009 à 17:57:04

Attends, je sorts ma boule de cristal pour deviner ton script et ton hébergeur.
Je te donnerai la solutions quand j'aurai trouvé. Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu­ lui dis de faire.

Répondre à avion-f16

2

SilvioB^^, le 4 oct 2009 à 18:08:27

MDR, ok merci, j'attends.

...

LOL, a oui, excuses moi, j'ai oublié de préciser ces informations (pourtant capitales).

Alors l'hébergeur c'est http://freehostia.com et le script:

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

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

	// Action du formulaire (si votre page a des paramètres dans l'URL)
	// si cette page est index.php?page=contact alors mettez index.php?page=contact
	// sinon, laissez vide
	$form_action = '';

	// 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.";

	// Message d'erreur du formulaire
	$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

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

	/*
	 * 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;
	};

	$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin

	// si formulaire envoyé, on récupère tous les champs. Sinon, on initialise les variables.
	$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']) : '';

	if (isset($_POST['envoi']))
	{
		// 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é
		$err_formulaire = (IsEmail($email)) ? false : true;

		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 = html_entity_decode($message);
			$message = str_replace('&#039;',"'",$message);
			$message = str_replace('&#8217;',"'",$message);
			$message = str_replace('<br>','',$message);
			$message = str_replace('<br />','',$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.php">Retour au formulaire</a></p>'."\n";
			$err_formulaire = true;
		};
	}; // fin du if (!isset($_POST['envoi']))

	if (($err_formulaire) || (!isset($_POST['envoi'])))
	{
		// afficher le formulaire
		echo '<form id="contact" method="post" action="'.$form_action.'">'."\n";
		echo '	<fieldset><legend>Vos coordonnées</legend>'."\n";
		echo '		<p>'."\n";
		echo '			<label for="nom">Nom :</label>'."\n";
		echo '			<input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" tabindex="1" />'."\n";
		echo '		</p>'."\n";
		echo '		<p>'."\n";
		echo '			<label for="email">Email :</label>'."\n";
		echo '			<input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="2" />'."\n";
		echo '		</p>'."\n";
		echo '	</fieldset>'."\n";

		echo '	<fieldset><legend>Votre message :</legend>'."\n";
		echo '		<p>'."\n";
		echo '			<label for="objet">Objet :</label>'."\n";
		echo '			<input type="text" id="objet" name="objet" value="'.stripslashes($objet).'" tabindex="3" />'."\n";
		echo '		</p>'."\n";
		echo '		<p>'."\n";
		echo '			<label for="message">Message :</label>'."\n";
		echo '			<textarea id="message" name="message" tabindex="4" cols="30" rows="8">'.stripslashes($message).'</textarea>'."\n";
		echo '		</p>'."\n";
		echo '	</fieldset>'."\n";

		echo '	<div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /></div>'."\n";
		echo '</form>'."\n";
	};
?>


Mais comme je l'ai dit, c'est un script que j'ai trouvé, il marche très bien, seulement sur cet hébergeur non.
Pourtant la fonction est incluse en FREE.

Merci de ton aide.

Répondre à SilvioB^^

3

avion-f16, le 4 oct 2009 à 18:25:13

Ton hébergeur a peut-être désactiver la fonction mail() comme beaucoup d'autres gratuits.
Essaye de t'envoyer un email depuis ce script (fonctionnel chez moi). Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu­ lui dis de faire.

Répondre à avion-f16

4

SilvioB^^, le 4 oct 2009 à 18:36:56

En effet, sa ne marche pas.

Donc l'hébergeur a désactivé la fonction mail().

Alors je n'ai aucune solution à part changer d'hébergeur ?

Répondre à SilvioB^^

5

 avion-f16, le 4 oct 2009 à 19:23:40

Non Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu­ lui dis de faire.

Répondre à avion-f16