8797 sujets

Développement web côté serveur, CMS

Bonjour à tous,
je suis confronté aujourd'hui à un problème assez inédit pour moi. J'ai déjà réalisé quelques formulaires d'envoi mail mais là malgré que la syntaxe semble être bonne un problème persiste. Après différents test j'ai remarqué que ma fonction mail ne marche pas lorsque je la place dans un if
Quand je la place sans le if elle fonctionne.
J'ai tenter de mettre la fonction mail dans une variable.
La fonction mail fonctionne et me met un 1 dans la variable mais dès que je met cette même variable dans un if mon script devient invalide. Smiley biggol
Pour le contexte il s'agit d'un site assez léger sur lequel j'utilise de l'URL Rewriting via htaccess.
Je fournis tout de même le code :
$error=false;
$mailok=false;

if($_POST['contact'] == '1'):	
	$vemail=false;
	$vnom=false;
	$vmessage=false;
	
	/* Nettoyage des variables récupérées */
	$ipcontact = fix_for_page($_POST['ip-contact']);
	$datecontact = fix_for_page($_POST['date-contact']);
	$nomcontact = fix_for_page($_POST['nom-contact']);
	$emailcontact = fix_for_page($_POST['email-contact']);
	$messagecontact = fix_for_page($_POST['message-contact']);
	
	/* Verifications */
	if(filter_var($emailcontact, FILTER_VALIDATE_EMAIL)) $vemail=true;
	if(!empty($nomcontact)) $vnom=true;
	if(!empty($messagecontact)) $vmessage=true;
	
	if($vemail && $vnom && $vmessage):
		/* Envoie du message */
		$emailto = '****@***.com';
		$sujet = "Nouveau Message | Contact : ".$nomcontact." - ".$ipcontact;
		$message = "Coordonnées : ".$nomcontact." <".$emailcontact."> (IP: ".$ipcontact." )\n
		Message : \n".$messagecontact;
		$message = wordwrap($message, 70);
		$headers = 'From: '.$nomcontact.' <'.$emailcontact.'>\r\n';
		$headers .= "MIME-Version: 1.0\r\n"; 
    	$headers .= "Content-type: text/plain; charset=utf-8\r\n";
		
		if(mail($emailto, $sujet, $message, $headers)) $mailok=true;
		
	else:
	$error=true;
	endif;
	
endif;


Merci d'avance Smiley cligne
Modifié par mathieuh (09 May 2012 - 23:40)
Normalement ça devrait marcher.
Au pire essai de faire

 if(mail($emailto, $sujet, $message, $headers)==1) $mailok=true;


Bon courage
Modérateur
En même temps il ne sert à rien le if, mail retourne un booleen

$mailok = mail($emailto, $sujet, $message, $headers);
Merci kustolovic, je n'y avait même pas pensé. Maintenant ça marche Smiley cligne
WebD j'ai quand même tester ta solution mais dans mon cas ça ne marche pas Smiley ohwell

Merci à vous deux de m'avoir aidé Smiley biggrin