Page 1 sur 1

Problème d'accents en PHP

Posté : 16 mars 2012, 18:06
par kenzzzi
Bonjour,

J'ai un souci avec un script de récupération mail en PHP! Après envoi, les lettres accentuées dans la partie $message sont transformées. Je sais que c'est un problème d'encodage. Quelqu'un peut m'aider svp !

Voici le script :

<?php

define("WEBMASTER_EMAIL", '[email protected]');

error_reporting (E_ALL ^ E_NOTICE);

function ValidateEmail($email)
{
$regex = '/([a-z0-9_.-]+)'.
'@'.
'([a-z0-9.-]+){2,255}'.
'.'.
'([a-z]+){2,10}/i';

if($email == '')
return false;
else
$eregi = preg_replace($regex, '', $email);
return empty($eregi) ? true : false;
}

$post = (!empty($_POST)) ? true : false;

if($post)
{
$name = stripslashes($_POST['name']);
$email = trim($_POST['email']);
$subject = stripslashes($_POST['subject']);
$message = stripslashes($_POST['message']);

$error = '';

if(!$name || $name == "Name*")
$error .= 'Veuillez indiquer votre nom.<br />';

if(!$email || $email == "Email*")
$error .= 'Veuillez indiquer votre adresse email.<br />';

if($email && !ValidateEmail($email))
$error .= 'Adresse email invalide.<br />';

if(!$message)
$error .= "Veuillez entrer un message avant de poster.<br />";

if(!$error)
{
$mail = mail(WEBMASTER_EMAIL, $subject, $message,
"From: ".$name." <".$email.">\r\n"
."Reply-To: ".$email."\r\n"
."X-Mailer: PHP/" . phpversion());

if($mail)
echo 'OK';
}
else
echo '<div class="formstatuserror">'.$error.'</div>';
}

?>

Merci d'avance

Re: Problème d'accents en PHP

Posté : 17 mars 2012, 05:51
par Fre3z69
Si tu veux qu'on t'aide au mieux, agence mieux ton poste

Déjà tu nous explique vaguement ton problème (passe encore) mais tu nous met ton code à la rache et ça, j'en connais pas beaucoup qui aimerais lire comme ça ton code ^^

En plus ton code n'est pas commenté, et nous on peux pas deviner à quoi sert tel ligne Oo

Donc je te conseil de rééditer ton poste ou d'en mettre un à la suite, qui présenterais mieux ton problème.

Tu parles à des gens, pas à un ordinateur, et nous on à besoin de plus de chaleur dans les discutions ^^

Cordialement

Re: Problème d'accents en PHP

Posté : 17 mars 2012, 07:05
par sirakawa
J'ai commencé par sauter le code, mais:
à propos de
error_reporting (E_ALL ^ E_NOTICE);
j'aimerais savoir quel type d'erreurs on s'attend à voir signalées.
à cette fin:
<?PHP
	$z=32767 ^1024;
	print "$z";
?>

puis
if($email == '')
return false;
else
$eregi = preg_replace($regex, '', $email);
return empty($eregi) ? true : false;
} 
m'a agressé par une présentation pour le moins illisible :
Il m'a fallu l'éditer pour voir les limites physiques de la fonction
function ValidateEmail($email)
{
	$regex = '/([a-z0-9_.-]+)'.'@'.'([a-z0-9.-]+){2,255}'.'.'.'([a-z]+){2,10}/i';

	if($email == '')
		return false;
	else
		$eregi = preg_replace($regex, '', $email);
		return empty($eregi) ? true : false;
}
Entre autres:
étrange conception du test, mais il fonctionne peut-être. (preg_match est la première idée que j'ai eue). Encore que je doute qu'il y ait des adresses du genre décrit par ([a-z]+){2,10}.
plusieurs points de sortie.
Je trouve plus lisible d'utiliser une variable $resultat qu'on passe à true ou false, et un seul return $resultat
de multiples erreurs de syntaxe, plus faciles encore à repérer si on met
error_reporting(E_ALL);

Re: Problème d'accents en PHP

Posté : 17 mars 2012, 07:35
par Fre3z69
Ca nous aide toujours pas à t'aider.

Précise dans quel cas tu utilise ce script 'enregistrement de membre, page de contact ...)

Ensuite définit dans quel cas ton erreur se produit.

Et ensuite explique nous avec ton code, ce que tu dois en faire exactement

Merci ^^

Cordialement

Re: Problème d'accents en PHP

Posté : 17 mars 2012, 09:36
par kenzzzi
Je m'excuse de mon post un peu confus, je l'avoue ! Il s'agit d'un script de récupération mail pour une page contact, qui fonctionne en PHP & Ajax. 'OK' transmet à ma page HTML le message suivant :

<script type="text/javascript">

$(document).ready(function(){
$("#contact-form").submit(function(){
var str = $(this).serialize();
$.ajax({
type: "POST",
url: "contact.php",
data: str,
success: function(msg)
{
$("#formstatus").ajaxComplete(function(event, request, settings){
if(msg == 'OK'){
result = '<div class="formstatusok">Votre message a bien &eacute;t&eacute; envoy&eacute;.</div>';
$("#fields").hide();
}
else{
result = msg;
}
$(this).html(result);
});
}

});
return false;
});
});

</script>

Et ça marche parfaitement ! Les accents paraissent dans le $subject, c'est dans $message que ça coince ?!Faudrait insérer Content-type dans la partie qui suit, mais je ne sais pas comment l'écrire! J'ai essayé aisni, mais ça ne marche pas :

$mail = mail(WEBMASTER_EMAIL, $subject, $message,
"From: ".$name." <".$email.">\r\n"
."Reply-To: ".$email."\r\n"
."Content-type: text/html; charset=iso-8859-1' . \r\n"
."X-Mailer: PHP/" . phpversion());

Re: Problème d'accents en PHP

Posté : 17 mars 2012, 09:42
par kenzzzi
@sirakawa : Le fichier apache/php.ini contient :

; Common Values:
; E_ALL & ~E_NOTICE (Show all errors, except for notices and coding standards warnings.)
; E_ALL & ~E_NOTICE | E_STRICT (Show all errors, except for notices)
; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE _ERROR (Show only errors)
; E_ALL | E_STRICT (Show all errors, warnings and notices including coding standards.)
; Default Value: E_ALL & ~E_NOTICE
; Development Value: E_ALL | E_STRICT
; Production Value: E_ALL & ~E_DEPRECATED
; http://php.net/error-reporting
error_reporting = E_ALL | E_STRICT

Par (E_ALL ^ E_NOTICE) je voulais afficher que l'intitulé de l'erreur (toutes les erreurs).

Re: Problème d'accents en PHP

Posté : 17 mars 2012, 09:45
par Fre3z69
tu peux mettre les balises pour définir un peux plus clairement le code

Code : Tout sélectionner

[code]ton code ^^
[/code]
utilise une librairie comme PhpMailer pour envoyer des courriels.

C'est un peux difficile au début à mettre en place, mais tu pourras aisément envoyer des courriels paramètres le format de tes courriels, ainsi que permettre les fichiers joints, et ce en définissant quelque paramètres.

En espérant que ça résoudra tes soucis ^^

Par contre je préfère le format utf-8, plus récent, et permet d'être lu sur de nombreux explorateurs sans soucis.

Re: Problème d'accents en PHP

Posté : 17 mars 2012, 09:52
par kenzzzi
Merci de ta suggestion Fre3z69, je note ;)

Re: Problème d'accents en PHP

Posté : 17 mars 2012, 10:24
par Fre3z69
J'ai eu un soucis en local pour tester les email, avec les restrictions d’accès des serveur SMTP.
Du coup je me suis retrancher sur ça, et j'avoue c'est fonctionnel à 100% et paramétrable à souhait ^^