IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème de rafraîchissement d'une page via $_SESSION [PHP 5.4]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 19
    Points : 17
    Points
    17
    Par défaut Problème de rafraîchissement d'une page via $_SESSION
    Bonjour à tous,

    je suis en train de développer un site web multilingue (via gettext) de vente en ligne.

    Lors du changement de langue l'utilisateur click sur le drapeau correspondant ce qui submit en post vers un contrôler qui lui procède au changement de la variable $_SESSION['lang'] avant de redirigé vers l'index.

    Le changement s'effectue bien correctement dans le contrôler mais ma vue a systématiquement besoin d’être refresh manuellement pour prendre en compte ce changement de langue.

    header.php
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <img src='view/image/logo.png' alt=''>
    <ul id="menu" class="nav-main">
        <li><a href="#nogo"><?php echo _("Accueil"); ?></a></li>
        <li class="list"><a href="#">Produit</a>
            <ul class="nav-sub">
                <li><a href="#nogo">Histoire</a></li>
                <li><a href="#nogo">Composition</a></li>
                <li><a href="#nogo">Bénéfice</a></li>
                <li><a href="#nogo">Animaux</a></li>
            </ul>
        </li>
        <li class="list"><a href="#">Temoignages</a>
            <ul class="nav-sub">
                <li><a href="#nogo">Publications Scientifiques</a></li>
                <li><a href="#nogo">Publications Presse</a></li>
                <li><a href="#nogo">Temoignage Client</a></li>
            </ul>
        </li>
        <li class="list"><a href="#">Special Chevaux</a>
            <ul class="nav-sub">
                <li><a href="#nogo">Commandez</a></li>
            </ul>
        </li>
        <li><a href="#nogo">Commandez</a></li>
        <li><a href="#nogo">AccesPro</a></li>
    </ul>
     
    <div id="langue">
        <form method="get" action="controleur/changeLangue.php"> 
            <input name="us" type="image" onclick="submit;" src="view/image/drapeau/us.png" alt="l">
            <input name="fr" type="image" onclick="submit;" src="view/image/drapeau/fr.png" alt="">
            <input name="es" type="image" onclick="submit;" src="view/image/drapeau/es.png" alt="">
            <input name="de" type="image" onclick="submit;" src="view/image/drapeau/de.png" alt="">
            <input name="nl" type="image" onclick="submit;" src="view/image/drapeau/nl.png" alt="">
            <input name="pt" type="image" onclick="submit;" src="view/image/drapeau/pt.png" alt="">
            <input name="it" type="image" onclick="submit;" src="view/image/drapeau/it.png" alt="">
            <input name="jp" type="image" onclick="submit;" src="view/image/drapeau/jp.png" alt="">
            <input name="kr" type="image" onclick="submit;" src="view/image/drapeau/kr.png" alt="">
            <input name="ru" type="image" onclick="submit;" src="view/image/drapeau/ru.png" alt="">
            <input name="cn" type="image" onclick="submit;" src="view/image/drapeau/cn.png" alt="">
            <input name="ph" type="image" onclick="submit;" src="view/image/drapeau/ph.png" alt="">
        </form>
    </div>

    changeLangue.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    session_start();
    print_r($_GET);
    if (isset($_GET['us_x'])) {
        $_SESSION['lang'] = 'en_US';
    }
    if (isset($_GET['fr_x'])) {
        $_SESSION['lang'] = 'fr_FR';
    }
    $url = $_SERVER['DOCUMENT_ROOT'] . 'Haarlem/index.php?p=test2';
    include ($_SERVER['DOCUMENT_ROOT'] . 'Haarlem/localization.php');
    header("Location: $url");
    ?>
    localization.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
     
    define('PROJECT_DIR', realpath('./'));
    define('LOCALE_DIR', PROJECT_DIR . '/locale');
    define('DEFAULT_LOCALE', 'fr_FR');
     
    require_once ($_SERVER['DOCUMENT_ROOT'] . 'Haarlem/lib/gettext/gettext.inc');
     
    $supported_locales = array('en_US', 'fr_FR', 'de_DE', 'it_IT', 'nl_NL', 'es_ES', 'pt_PT', 'kr_KR', 'jp_JP', 'ru_RU', 'gr_GR', 'cn_CN', 'ph_PH');
    $encoding = 'UTF-8';
    print_r($_SESSION['lang']);
    // gettext setup
    T_setlocale(LC_MESSAGES, $_SESSION['lang']);
    // Set the text domain as 'messages'
    $domain = 'traduction';
    bindtextdomain($domain, LOCALE_DIR);
    // bind_textdomain_codeset is supported only in PHP 4.2.0+
    if (function_exists('bind_textdomain_codeset'))
        bind_textdomain_codeset($domain, $encoding);
    textdomain($domain);
     
    header("Content-type: text/html; charset=$encoding");
    ?>
    Avez-vous une idée de comment résoudre ce problème ?

    Cordialement.

    PS: Cela fait juste 1 semaine que je fais du PHP, si vous remarquez des erreurs dans le code hésité pas a me le faire remarquer.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 19
    Points : 17
    Points
    17
    Par défaut
    J'ai trouvé la solution.

    Lorsqu'on fait une redirection avec la fonction php "header( url )" ET que l'url que l'on choisi est absolue, c'est a dire du type
    "http://www.google.com/", ALORS php choisi de NE PAS transmettre les variable de session CAR il (php) considère que ca comporte des dangers, et que cette demande d'url à votre serveur peut venir d'un autre site : craker, pirateur etc...

    SI vous avez un url relatif, la, php conserve les sessions CAR la demande vient forcément d'un client du site.
    J'ai donc remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $url = $_SERVER['DOCUMENT_ROOT'] . '../index.php?p=test2';
    header("Location: $url");
    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $url = '../index.php?p=test2';
    header("Location: $url");
    Voila l'affaire est résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de récupération d'une page via HttpsURLConnection
    Par krum93 dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 26/05/2014, 11h05
  2. Réponses: 5
    Dernier message: 13/05/2008, 16h57
  3. Réponses: 5
    Dernier message: 16/07/2007, 10h00
  4. Problème de chaine sur une page HTML
    Par Kerod dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/11/2004, 16h23
  5. [Débutant] Problème de déconnexion d'une page JSP
    Par amal9 dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 22/01/2004, 13h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo