Bonjour à tous et à toutes
Je cherche ce qui ne va pas dans mon fichier .PHP pour avoir si possible le retour en français et l'heure par exemple 15h34 et non pas "Message sent from website on date Wednesday, August 20th, 2025, hour: 03:34 PM".

Mon .php :

<?php 
$to = "team.0cool@gmail.com"; 
$subject = "Messsage from website";
$headers = "Name: Form Mailer";
$forward = 1;
$location = "merci.html";

$date = date ("l, F jS, Y"); 
$time = date ("h:i A"); 



$msg = "Message sent from website on date  $date, hour: $time.\n\n\n\n"; 

if ($_SERVER['REQUEST_METHOD'] == "POST") {
	foreach ($_POST as $key => $value) { 
		$msg .= ucfirst ($key) ." : ". $value . "\n\n"; 
	}
}
else {
	foreach ($_GET as $key => $value) { 
		$msg .= ucfirst ($key) ." : ". $value . "\n\n"; 
	}
}

mail($to, $subject, $msg); 
if ($forward == 1) { 
    header ("Location:$location"); 
} 
else { 
    echo "Merci pour votre message. Nous vous contacterons dans les plus brefs délais."; 
} 

?>

D'avance merci beaucoup.

moderation: mis en forme du sujet
Modifié par Niuxe (20 Aug 2025 - 17:20)
Modérateur
Salut,

Il faut indiquer le fuseau horaire et la locale :


setlocale(LC_TIME, 'fr_FR');
date_default_timezone_set('Europe/Paris');
echo utf8_encode(strftime('%A %d %B %Y, %Hh%M'));


mercredi 20 août 2025, 17h26


Il me semble que utf8_encode et strftime sont dépreciés depuis php 8. Il va falloir faire des recherches dans le cas où tu utilises php 8. Ce code fonctionne quand même.
Modifié par Niuxe (20 Aug 2025 - 17:30)
Niuxe a écrit :
Salut,

Il faut indiquer le fuseau horaire et la locale :


setlocale(LC_TIME, 'fr_FR');
date_default_timezone_set('Europe/Paris');
echo utf8_encode(strftime('%A %d %B %Y, %H:%M'));


mercredi 20 août 2025, 17:26


Il me semble que utf8_encode et strftime sont dépreciés depuis php 8. Il va falloir faire des recherches dans le cas où tu utilises php 8. Ce code fonctionne quand même.


Merci Niuxe, afin de ne pas faire d'erreur , à quel endroit dois-je placer le code ?
Car j'ai fait comme cela ;
<?PHP

setlocale(LC_TIME, 'fr_FR');
date_default_timezone_set('Europe/Paris');
echo utf8_encode(strftime('%A %d %B %Y, %Hh%M'));

$to = "team.0cool@gmail.com"; 
$subject = "Messsage du site Pic & Coud 2.0";
$headers = "Name: Form Mailer";
$forward = 1;
$location = "merci.html";

$date = date ("l, F jS, Y"); 
$time = date ("h:i A"); 



$msg = "Message envoyé depuis le site Web  $date, heure: $heure.\n\n\n\n"; 

if ($_SERVER['REQUEST_METHOD'] == "POST") {
	foreach ($_POST as $key => $value) { 
		$msg .= ucfirst ($key) ." : ". $value . "\n\n"; 
	}
}
else {
	foreach ($_GET as $key => $value) { 
		$msg .= ucfirst ($key) ." : ". $value . "\n\n"; 
	}
}

mail($to, $subject, $msg); 
if ($forward == 1) { 
    header ("Location:$location"); 
} 
else { 
    echo "Merci pour votre message. Nous vous contacterons dans les plus brefs délais."; 
} 

?>

Et j'obtiens cela : mercredi 20 août 2025, 17h45 au lieu du retour vers mon fichier merci.html
Modifié par BruChri (20 Aug 2025 - 17:50)
Bonjour, avant la fonction header() vous ne pouvez avoir aucun retour au navigateur (même pas un espace).
Lire la doc https://www.php.net/manual/fr/function.header.php
Pour que cela fonctionne supprimer le echo avant le header().

PS : exit(); après un header() affin d'éviter la poursuite du code.

>> à quel endroit dois-je placer le code ?
A l'endroit ou vous souhaitez qu'il s'affiche.
casper2 a écrit :
à quel endroit dois-je placer le code ?
A l'endroit ou vous souhaitez qu'il s'affiche.


casper2, merci, mais je ne souhaite pas qu'il s'affiche, mais que dans le retour sur ma boite mail j'ai les bonnes heures "Messsage du site xxx xxx xxx
Boîte de réception
sh-174456840@eu.hosting-webspace.io
19:17 (il y a 0 minute)
À moi
Ce que je reçois:
Message envoyé depuis le site Web Wednesday, August 20th, 2025, heure: ."

Ce que je souhaite, Message envoyé depuis le site Web Mercredi, 20 août,2025, heure 19h25
Modifié par BruChri (20 Aug 2025 - 19:26)
Bonsoir,
>> merci, mais je ne souhaite pas qu'il s'affiche
La c'est contradictoire, vous dite que vous ne souhaitez pas qu'il s'affiche mais qu'il s'affiche quand même dans le message du mail que vous recevez!!
Tout cela me fais dire que vous ne comprenez pas ce que vous écrivez.
Solution : Remplacer le code qui génère la date en anglais par celui qui génère le code de la date en français.

PS : J'avais bien compris ce que vous vouliez faire.