Problème de redirection avec site multilingue

Résolu
dalma101 Messages postés 51 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 13 août 2008 - 30 juin 2006 à 18:54
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008 - 1 juil. 2006 à 18:20
Salut, j'ai des soucis avec la mise à jour de mon site. Je tiens en effet à le passer en multilingue (français, anglais pour commencer) mais j'ai un petit souci.

Pour commencer, voilà une petite description de mon site. Mes pages comportent 4 includes ("entete", "menu", "corps" et "basdepage") et lors de la navigation, seul l'include "corps" change d'une page à l'autre. Dans l'include "entete", j'ai deux drapeaux permettant de choisir la langue que vous voulez. La traduction des pages se passent très bien sur le fonds. C'est sur la forme que ça marche pas. En effet si on change la langue sur une autre page que la page d'accueil, la regénération des pages me redirige forcément vers la page d'accueil (href= "index.php" ou lieu de href="index.php?page='pagecourante'&...") . C'est pas un souci dans le sens où on choisit souvent la langue en entrant dans le site mais si c'était possible de corriger cela.

Je tiens à préciser (vu que c'est une histoire de lien que pour passer d'une page à l'autre que j'utilise des liens du style : href="index.php?page='acceuil'&...'"

Je fournis une partie du code pour être (peut-être ?) plus clair...

<hr size="2" width="100%" />
index.php

<hr size="2" width="100%" />
   
    <?php
    include("langues\select_langue.php");
    ?>
    

    

    <?php
    include('entete.php');
    ?>
    

    ...
    

    <?php
    include('menu.php');
    ?>
    

    

    <?php
    if (isset ($_GET['page']))
    {
    include($_GET['page'] . '.php')
    }
    else
    {
    include('accueil.php');
    }
    ?>
    

    ...
    

    

    

    

<hr size="2" width="100%" />
entete.php

<hr size="2" width="100%" />

    ...
    

    

    [langues\choix_langue.php?langue=fr ]
    <?php
    echo $ENTETETITRE;
    ?>
    [langues\choix_langue.php?langue=en ]
    

    

    <?php
    echo '
[index.php?page=accueil ' . $ENTETEACCUEIL . ']
';
    ...
    ?>
    


<hr size="2" width="100%" />
langues\choix_langue.php ( Je pense que l'erreur vient de là quelque part )

<hr size ="2" width= "100%" />
    <?php
    if(!$_GET["langue"])
    {
    echo "Erreur, aucune langue n'a été choisie...";
    }
    else
    {
    SetCookie("languesite",$_GET["langue"]);
    Header( "Location: index.php" ); //C'est pas ici que ça plante ?
    }
    ?>

<hr size ="2" width="100%" />
langues\select_langue.php

<hr size="2" width="100%" />
    <?php
    if (!$HTTP_COOKIE_VARS["languesite"])
    {
    include("langue_fr.php");
    }
    else
    {
    $lang = $HTTP_COOKIE_VARS["languesite"];
    include("langue_" . $lang . ".php");
    }
    ?>

<hr size="2" width="100%" />
langues\langue_fr.php

<hr size="2" width="100%" />
    <?php
    $MENUTITRE='Mes créations :.';
    $MENUDIAPORAMA='.: Diaporama';
    ...
    ?>

6 réponses

Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
30 juin 2006 à 19:56
Mais sinon effectivement le pb vient du header, tu devrais essayer de le faire pointer vers la page précédente, pas l'index ($HTTP_REFERER) mais bon c'est moins joli comme solution
3
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
1 juil. 2006 à 18:20
Tu inclus des fichiers qui passe dans l'url :
Par exemple si l'adresse est : "http://tonsite.fr/index.php?page= forum" va afficher ton fichier " forum.php ".

Mais le problème c'est que tu ne vérifies pas si le fichier vient de ton site (ou même si le visiteur à acces à ce fichier)
Par exemple :
-> "http://tonsite.fr/index.php?page =http://autresite.fr/index" va afficher le fichier "index.php" du site "http://autre.fr"

Pour corriger cette faille au lieu de :
"if (isset($_GET['page'])) include($_GET['page'].'php');"

utilise plutot ceci :
"if (isset($_GET['page'])) switch($_GET['page']) {
/* Si la variable $_GET['page'] est égale à "page1" avec on inclus "page1.php" et ainsi de suite */
case 'page1': require_once('page1.php'); break;
case 'page2': require_once('page2.php'); break;
/* Si la variable n'est pas égale à ce que  tu veux inclure, tu inclus un page d'erreur (ou une page pour bannir le visiteur) */
default: require_once('erreur.php'); break;
}"
3
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
30 juin 2006 à 19:51
Salut,
au lieu de faire un lien vers une autre page pour changer de langue, tu devrais faire une XMLHttpRequest qui modifie la variable de session/cookie et qui ensuite recharge la page.
à+
0
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
30 juin 2006 à 21:54
Salut!
Dans le lien de changement de langue, tu transmet la page en cours et ses paramètres ( index.php?var=valeur&variable2=valeur2, tu récupères var=valeur&variable2=valeur2 avec $_SERVER['QUERY_STRING'] ) et ensuite tu rediriges selon ce qui a été passé...

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
1 juil. 2006 à 10:58
Salut,
"if (isset ($_GET['page'])) include($_GET['page'] . '.php')" fait attention à la faille "include" ...
0
dalma101 Messages postés 51 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 13 août 2008
1 juil. 2006 à 13:59
Excusez-moi, mais il n'y aurait pas moyen d'être un petit peu plus clair quand au réponse ? Je m'embrouille un peu à vrai dire... Et je ne suis que novice pour le moment en php.

Merci d'avance
0
Rejoignez-nous