J'utilise ce code pour rediriger les gens vers certaines URL en fonction de la langue de leur navigateur.

Comme vous le verrez, s'ils ont un navigateur allemand, aucun changement ne se produira. S'ils ont un navigateur anglais, français ou espagnol, ils seront redirigés vers les URL appropriées.

Cela ne se produit qu'une seule fois dans une session de navigateur afin qu'ils puissent atteindre la maison allemande, si nécessaire, à partir d'une autre langue.

<?php 

session_start();
if(!isset($_SESSION['visitedOnce'])){

    if(is_home() && ICL_LANGUAGE_CODE == 'de' ){

        $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
        switch ($lang){
            case "de":
                //echo "PAGE DE";
                break;
            case "en":
                //echo "PAGE EN";
                echo '<script type="text/javascript">window.location = "http://www.google.com";</script>';
                break;
            case "es":
                //echo "PAGE ES";
                echo '<script type="text/javascript">window.location = "http://www.google.es";</script>';
                break;        
            case "fr":
                //echo "PAGE FR";
                echo '<script type="text/javascript">window.location = "http://www.google.fr";</script>';
                break;        
            default:
                //echo "PAGE EN - Setting Default";
                echo '<script type="text/javascript">window.location = "http://www.google.com";</script>';
                break;
        }

    }

    $_SESSION['visitedOnce'] = true;
}
?>

Dans Firefox, cela fonctionne correctement, le HTML ne se chargera pas et la redirection se produira de manière transparente.

Cependant, Google Chrome affiche des morceaux laids de HTML non stylisé avant que la redirection ne se produise.

Existe-t-il un moyen de l'empêcher d'utiliser ce type de redirection javascript?

Merci!

0
Peanuts 13 juil. 2015 à 12:04

2 réponses

Meilleure réponse

Et qu'en est-il de la redirection directement dans PHP? Ensuite, vous ne verrez pas de vilains morceaux de HTML non stylisé ... Faites attention, vous n'avez pas de sortie avant header('Location: http://www.google.***');.

<?php 
session_start();

if(!isset($_SESSION['visitedOnce'])){
    $_SESSION['visitedOnce'] = true;

    if(is_home() && ICL_LANGUAGE_CODE == 'de' ){
        $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
        switch ($lang){
            case "de":
                //echo "PAGE DE";
                break;
            case "en":
                //echo "PAGE EN";
                header('Location: http://www.google.com');
                exit;
                //echo '<script type="text/javascript">window.location = "http://www.google.com";</script>';
                //break;
            case "es":
                //echo "PAGE ES";
                header('Location: http://www.google.es');
                exit;
                //echo '<script type="text/javascript">window.location = "http://www.google.es";</script>';
                //break;        
            case "fr":
                //echo "PAGE FR";
                header('Location: http://www.google.fr');
                exit;
                //echo '<script type="text/javascript">window.location = "http://www.google.fr";</script>';
                //break;        
            default:
                //echo "PAGE EN - Setting Default";
                header('Location: http://www.google.com');
                exit;
                //echo '<script type="text/javascript">window.location = "http://www.google.com";</script>';
                //break;
        }

    }

    //$_SESSION['visitedOnce'] = true;
}
?>
3
Legionar 13 juil. 2015 à 09:11

Cependant, Google Chrome affiche des morceaux laids de HTML non stylisé avant la redirection. Existe-t-il un moyen de l'empêcher d'utiliser ce type de redirection javascript?

Faites ressembler votre document html à ceci

<body style="display:none;">
...
<script>
    document.body.style.display = '';
</script>
</body>
3
Jaromanda X 13 juil. 2015 à 09:07