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 :

Mise à jour $_SESSION en fonction du lien


Sujet :

Langage PHP

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Février 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 101
    Points : 121
    Points
    121
    Par défaut Mise à jour $_SESSION en fonction du lien
    Bonjour,

    Je voudrai mettre à jour la variable $_SESSION quand je clique sur un des liens (click sur Espagnol -> $_SESSION["lang"] = "es")

    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
    <?php
    session_start();
    $_SESSION["lang"] = "fr";
    ?>
    <!DOCTYPE html>
    <html lang="fr">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Essai</title>
    </head>
    <body>
        <div>
            <a href="#"><img src="en.png">Anglais</a>
            <a href="#"><img src="es.png">Espagnol</a>
            <a href="#"><img src="fr.png">Francais</a>
            <a href="#"><img src="zh.png">Chinois</a>
            <a href="#"><img src="ja.png">Japonnais</a>
        </div>
    </body>
    </html>
    Merci pour votre aide

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Ton menu :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <a href="changeLanguage.php?lang=en"><img src="en.png">Anglais</a>
    <a href="changeLanguage.php?lang=es"><img src="es.png">Espagnol</a>
    <a href="changeLanguage.php?lang=fr"><img src="fr.png">Francais</a>
    <a href="changeLanguage.php?lang=zh"><img src="zh.png">Chinois</a>
    <a href="changeLanguage.php?lang=ja"><img src="ja.png">Japonnais</a>

    Et dans changeLanguage.php :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
     
    session_start();
     
    $lang = $_GET['lang'] ?? null;
     
    if (!in_array($lang, ['en', 'es', ...])) { // Contrôle du paramètre
        exit('Langue inconnue');
    }
     
    $_SESSION['lang'] = $lang;
     
    header('Location: index.php'); // Redirection
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Février 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 101
    Points : 121
    Points
    121
    Par défaut
    Bonjour Seb,
    Merci pour ton aide et je comprends ce que tu veux faire mais je dois avoir encore un petit problème.
    Index.html :
    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
    <?php
        session_start();
        var_dump($_SESSION['lang']);
    ?>
     
    <!DOCTYPE html>
    <html lang="fr">
     
    <head>
        <meta charset="UTF-8">
        <title>Essai</title>
    </head>
    <body>
        <div>
            <a href="changeLanguage.php?lang=en"><img src="en.png">Anglais</a>
            <a href="changeLanguage.php?lang=es"><img src="es.png">Espagnol</a>
            <a href="changeLanguage.php?lang=fr"><img src="fr.png">Francais</a>
            <a href="changeLanguage.php?lang=zh"><img src="zh.png">Chinois</a>
            <a href="changeLanguage.php?lang=ja"><img src="ja.png">Japonnais</a>
        </div>
    </body>
    </html>

    changeLanguage.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $lang = $_GET['lang'] ?? null;
    if (!in_array($lang, ['en', 'es', 'fr', 'zh', 'ja'])) { // Contrôle du paramètre
        exit('Langue inconnue');
    }
    $_SESSION['lang'] = $lang;
    header('Location: index.php'); // Redirection
    ?>
    Quand je clique sur les liens, la variable $_SESSION ne change pas ?

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 452
    Points : 43 103
    Points
    43 103
    Par défaut
    Je suis pas spécialiste php mais je pense que c'est du au fait que tu n'as pas sessions_start() dans changelanguage.php
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Membre averti Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 329
    Points : 430
    Points
    430
    Par défaut
    En effet, pour manipuler les session il faut commencer par session_start();

    Pourquoi ne pas tout mettre dans la page index ?
    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
    <?php
    session_start();
    if (isset($_GET['lang'])) {
       $lang = $_GET['lang'] ?? null;
     
       if (!in_array($lang, ['en', 'es', ...])) { // Contrôle du paramètre
           exit('Langue inconnue');
       }
     
       $_SESSION['lang'] = $lang;
    }
    else if (!isset($_SESSION['lang'])) { $_SESSION['lang']='fr';  } // ----- langue par défaut : à choisir
     
    var_dump($_SESSION['lang']);
    ?>
    <!DOCTYPE html>
    <html lang="fr">
    ... reste du code

  6. #6
    Membre régulier

    Profil pro
    Inscrit en
    Février 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 101
    Points : 121
    Points
    121
    Par défaut
    Bonjour Chrtophe,

    Je suis pas spécialiste php mais je pense que c'est du au fait que tu n'as pas sessions_start() dans changelanguage.php
    J'ai bien mis session_start dans le index.html. Je l'ai déplacé par rapport à la solution de Seb pour pouvoir mettre une langue par défaut (fr par ex ) au premier démarrage.
    Je pense qu'il faut le mettre qu'une seule fois !!!

    Bonjour Ddaweb,
    Merci pour ta solution mais si tu veux tout mettre dans le même fichier alors le plus important pour moi c'est le "reste du code" !!!
    Qu'elle est la syntaxe des liens ?

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="changeLanguage.php?lang=en"><img src="en.png">Anglais</a>

  7. #7
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    J'ai bien mis session_start dans le index.html
    Et le PHP est bien exécuté dans ce fichier .html ? Généralement seuls les fichiers en .php sont interprétés.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  8. #8
    Membre régulier

    Profil pro
    Inscrit en
    Février 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 101
    Points : 121
    Points
    121
    Par défaut
    Et le PHP est bien exécuté dans ce fichier .html ? Généralement seuls les fichiers en .php sont interprétés.
    Désolé, c'est une erreur de saisie dans mon message, les deux fichiers (index et changeLanguage) sont bien en php.

    Index.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
    24
    <?php
        session_start();
        if (!isset($_SESSION['lang'])) { $_SESSION['lang']='fr';  } // -- Langue par défaut
    ?>
    <!DOCTYPE html>
    <html lang="fr">
     
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Test</title>
    </head>
    <body>
        <h1>La langue est <?php echo $_SESSION['lang'] ?></h1>
        <div>
            <a href="changeLanguage.php?lang=en"><img src="en.png">English</a>
            <a href="changeLanguage.php?lang=es"><img src="es.png">Spanish</a>
            <a href="changeLanguage.php?lang=fr"><img src="fr.png">French</a>
            <a href="changeLanguage.php?lang=zh"><img src="zh.png">Chinese</a>
            <a href="changeLanguage.php?lang=ja"><img src="ja.png">Japanese</a>
        </div>
    </body>
    </html>
    changeLanguage.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $lang = $_GET['lang'] ?? null;
    if (!in_array($lang, ['en', 'es', 'fr', 'zh', 'ja'])) { exit($_SESSION['lang'] = 'fr'); }
     
    $_SESSION['lang'] = $lang;
     
    header('Location: index.php'); // Redirection
    ?>
    Je ne comprends pas ca doit fonctionner...
    Est-ce que quelqu'un peut me dire si chez lui ca fonctionne ?
    Merci beaucoup

  9. #9
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!in_array($lang, ['en', 'es', 'fr', 'zh', 'ja'])) { exit($_SESSION['lang'] = 'fr'); }
    T'es censé faire quoi ici ?

    Quel est le problème ?
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  10. #10
    Membre averti Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 329
    Points : 430
    Points
    430
    Par défaut
    Citation Envoyé par l.mnu Voir le message
    Bonjour Ddaweb,
    Merci pour ta solution mais si tu veux tout mettre dans le même fichier alors le plus important pour moi c'est le "reste du code" !!!
    Qu'elle est la syntaxe des liens ?
    Le reste du ton code de ta page index ne change pas beaucoup (il faut rester sur ta page, le code de session tout au début de la page index.php -> plus de ChangeLangue.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
    <!DOCTYPE html>
    <html lang="fr">
     
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Test</title>
    </head>
    <body>
        <h1>La langue est <?php echo $_SESSION['lang'] ?></h1>
        <div>
            <a href="?lang=en"><img src="en.png">English</a>
            <a href="?lang=es"><img src="es.png">Spanish</a>
            <a href="?lang=fr"><img src="fr.png">French</a>
            <a href="?lang=zh"><img src="zh.png">Chinese</a>
            <a href="?lang=ja"><img src="ja.png">Japanese</a>
        </div>
    </body>
    </html>
    Perso je mettrais le nom de la langue dans sa langue, ex. : French -> Français

    Le session_start() est sur chaque page qui traite de session, vu que vous voulez absolument le faire sur 2 pages, il doit être présent sur les 2 pages

  11. #11
    Membre régulier

    Profil pro
    Inscrit en
    Février 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 101
    Points : 121
    Points
    121
    Par défaut
    Ca marche, je suis trop content !!!

    Le session_start() est sur chaque page qui traite de session, vu que vous voulez absolument le faire sur 2 pages, il doit être présent sur les 2 pages
    C'était ca, il faut mettre session_start dans les deux fichiers.

    Et en version un fichier (solution de Ddaweb) fonctionne également .

    Un grand merci a vous tous pour votre aide, c'est génial !!!

    PS :

    Perso je mettrais le nom de la langue dans sa langue, ex. : French -> Français
    Sur mon site réel c'est déjà fait !!!

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

Discussions similaires

  1. Mise à jour d'un tableau de liens
    Par mielikki dans le forum Langage
    Réponses: 3
    Dernier message: 12/09/2009, 19h59
  2. mise à jour de la fonction somme
    Par moimemessssssssss dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 14/04/2008, 20h42
  3. pb de mise à jour de la fonction hpagebreak
    Par bybelos33 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/07/2007, 11h43
  4. Mise à jour Champ en fonction liste modifiable
    Par lito74 dans le forum Access
    Réponses: 2
    Dernier message: 30/01/2006, 14h37
  5. [mise à jour tableau en fonction du button radio]
    Par Lady_jade dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 30/12/2005, 11h41

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