Problème de redirection selon la langue
Stef
-
Vestarija Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
Vestarija Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je fais mon premier site internet et autant dire qu'il me reste encore bcp à apprendre.
Je souhaite JUSTE rediriger le visiteur selon la langue de son navigateur et ici en loccurence russe. Ci-dessous le code que j'ai tapé tout en haut de ma page index.php:
<?php
if (!isset($langue_user) && !isset($_SESSION["ch_langue"])){
$langue_user=substr($_SERVER["HTTP_ACCEPT_LANGUAGE"], 0, 2);
switch($langue_user){
case"fr":
$_SESSION["ch_langue"] = "fr";
break;
case "ru":
$_SESSION["ch_langue"] = "ru";
header ("Location: /ru/index2.php");
break;
}
}
?>
Théoriquement cela devrait fonctionner. Sur un navigateur en FR no problème en revanche avec firefox en russe ça passe pas! je tombe sur la page fr et tout en haut de mon site voici le code d'erreur:
Warning: Cannot modify header information - header already sent by (output started at /home/miste653/public_html/index.php:1) in /home/miste653/public_html/index.php on line 11
Voilà je suis noob (d'ailleurs c'est pas la première fois que je viens sur ce super site)
Mercii ààà vouss!!
Stef
Je fais mon premier site internet et autant dire qu'il me reste encore bcp à apprendre.
Je souhaite JUSTE rediriger le visiteur selon la langue de son navigateur et ici en loccurence russe. Ci-dessous le code que j'ai tapé tout en haut de ma page index.php:
<?php
if (!isset($langue_user) && !isset($_SESSION["ch_langue"])){
$langue_user=substr($_SERVER["HTTP_ACCEPT_LANGUAGE"], 0, 2);
switch($langue_user){
case"fr":
$_SESSION["ch_langue"] = "fr";
break;
case "ru":
$_SESSION["ch_langue"] = "ru";
header ("Location: /ru/index2.php");
break;
}
}
?>
Théoriquement cela devrait fonctionner. Sur un navigateur en FR no problème en revanche avec firefox en russe ça passe pas! je tombe sur la page fr et tout en haut de mon site voici le code d'erreur:
Warning: Cannot modify header information - header already sent by (output started at /home/miste653/public_html/index.php:1) in /home/miste653/public_html/index.php on line 11
Voilà je suis noob (d'ailleurs c'est pas la première fois que je viens sur ce super site)
Mercii ààà vouss!!
Stef
A voir également:
- Problème de redirection selon la langue
- Changer la langue de windows 10 - Guide
- Telecharger langue arabe - Télécharger - Bureautique
- Comment changer la langue sur facebook - Guide
- Telecharger la langue arabe sur le clavier - Télécharger - Divers Web & Internet
- Netflix change de langue tout seul - Forum TV & Vidéo
2 réponses
Bonjour,
Le message d'erreur indique que vous avez déjà envoyé les headers puis du contenu de page avant l'instruction header.
Le protocole HTTP envoie toujours la partie HEAD avant la partie body.
En PHP, la partie HEAD est envoyée par l'instruction header
La partie BODY par un echo, ou un print, ou du code HTML avant le code PHP.
Si vous avez une instruction header dans le code, il ne faut pas, avant l'exécution de cette instruction, avoir envoyé du contenu HTML, genre un echo, print, voire juste un retour chariot avant <?php
Votre pb doit venir de là.
Et puis mettez un exit; juste après un header('location...
Ca évite de mauvaise surprises.
Le message d'erreur indique que vous avez déjà envoyé les headers puis du contenu de page avant l'instruction header.
Le protocole HTTP envoie toujours la partie HEAD avant la partie body.
En PHP, la partie HEAD est envoyée par l'instruction header
La partie BODY par un echo, ou un print, ou du code HTML avant le code PHP.
Si vous avez une instruction header dans le code, il ne faut pas, avant l'exécution de cette instruction, avoir envoyé du contenu HTML, genre un echo, print, voire juste un retour chariot avant <?php
Votre pb doit venir de là.
Et puis mettez un exit; juste après un header('location...
Ca évite de mauvaise surprises.