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 :

Session ne conserve pas paramètre.


Sujet :

Langage PHP

  1. #1
    Candidat au Club Avatar de blaoi
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Session ne conserve pas paramètre.
    Bonjour, bonsoir à tous.

    Premièrement si je poste dans la mauvaise section je vous prie de m'excuser et si cela est possible aux modérateurs de bouger le topic je leur en serait gré.

    Je développe un site multilingue et j'aimerais sauvegarder la valeur de la langue dans une session afin que lorsque l'utilisateur visite le site, toutes les pages soient dans la même langue.
    Malheureusement, là où le problème se pose c'est que la session ne conserve pas le paramètre. Comme vous pouvez le voir (édit: lien supprimé), la langue se réinitialise à chaque changement de page.
    (La langue par défaut étant l'anglais).

    Voici la partie du code où se trouve le formulaire permettant à l'utilisateur de choisir sa langue:
    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
     
    <header>
                <nav>
                    <a href="/index.php">home</a>
                    <a href="/rsc/html/content/dev.php">dev</a>
                    <a href="/rsc/html/content/i.php">I</a>
                    <a href="/rsc/html/content/contact.php">contact</a>
                </nav>
                <div id="lang_selecter">
                    <!--<script src="/rsc/js/lang_selecter.js">
                        To fix :)
                    </script>--> 
                    <!--<noscript>-->
                        <?php $actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";?>
                        <form action="<?php echo $actual_link;?>" method="post">
                            <button type="submit" name="lang_selecter" value="en">EN</button>
                            <button type="submit" name="lang_selecter" value="fr">FR</button>
                            <button type="submit" name="lang_selecter" value="jp">JP</button>
                        </form>
                    <!--</noscript>-->
                </div>
            </header>
    Et voici la partie la plus importante, là où on regarde la valeur lang_selecter:
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    <?php
        if(session_id() == '') {
            session_start();
        }
        echo $_REQUEST['lang_selecter'];
        switch($_REQUEST['lang_selecter']){
            case "en":
                $_SESSION['lang'] = "en";
                break;
            case "fr":
                $_SESSION['lang'] = "fr";
                break;
            case "jp":
                $_SESSION['lang'] = "jp";
                break;
            default:
                $_SESSION['lang'] = "en";
                break;
        }
        $fileList = get_included_files();
        $filename = str_replace(".php",".inc",basename($fileList[0]));
        if(basename($fileList[0]) == 'index.php'){
            require_once('config.php');
        }else{
            require_once("../../../config.php");
        }
        switch($_SESSION['lang']){
            case "en":
                require_once(ROOT_DIR."/rsc/lang/en/header.inc");
                require_once(ROOT_DIR."/rsc/lang/en/".$filename);
                require_once(ROOT_DIR."/rsc/lang/en/footer.inc");
                break;
            case "fr":
                require_once(ROOT_DIR."/rsc/lang/fr/header.inc");
                require_once(ROOT_DIR."/rsc/lang/fr/".$filename);
                require_once(ROOT_DIR."/rsc/lang/fr/footer.inc");
                break;
            case "jp":
                require_once(ROOT_DIR."/rsc/lang/jp/header.inc");
                require_once(ROOT_DIR."/rsc/lang/jp/".$filename);
                require_once(ROOT_DIR."/rsc/lang/jp/footer.inc");
                break;
            default:
                require_once(ROOT_DIR."/rsc/lang/en/header.inc");
                require_once(ROOT_DIR."/rsc/lang/en/".$filename);
                require_once(ROOT_DIR."/rsc/lang/en/footer.inc");
                break;
        }
        $filename = str_replace(".php",".css",basename($fileList[0]));
    ?>
    <!DOCTYPE html>
    <html>
        <head>
            <link rel="stylesheet" media="screen" type="text/css" href="/rsc/css/screen_header.css">
            <link rel="stylesheet" media="screen" type="text/css" href="/rsc/css/screen_main.css">
            <link rel="stylesheet" media="screen" type="text/css" href="/rsc/css/screen_footer.css">
            <link rel="stylesheet" media="screen" type="text/css" href="/rsc/css/screen_<?php echo $filename;?>">
            <link rel="stylesheet" media="handheld" type="text/css" href="/rsc/css/handheld_header.css">
            <link rel="stylesheet" media="handheld" type="text/css" href="/rsc/css/handheld_main.css">
            <link rel="stylesheet" media="handheld" type="text/css" href="/rsc/css/handheld_footer.css">
            <link rel="stylesheet" media="handheld" type="text/css" href="/rsc/css/handheld_<?php echo $filename;?>">
            <link rel="stylesheet" media="print" type="text/css" href="/rsc/css/print_header.css">
            <link rel="stylesheet" media="print" type="text/css" href="/rsc/css/print_main.css">
            <link rel="stylesheet" media="print" type="text/css" href="/rsc/css/print_footer.css">
            <link rel="stylesheet" media="print" type="text/css" href="/rsc/css/print_<?php echo $filename;?>">
            <link rel="icon" href="/favicon.gif">
            <meta charset="UTF-8">
            <title>Blaoi's corner</title>
            <script src="/rsc/js/jquery/jquery-3.2.1.min.js" type="text/javascript"></script>
            <script src="/rsc/js/msdropdown/jquery.dd.min.js" type="text/javascript"></script>
            <script src="/rsc/js/init.js"></script>
            <link rel="stylesheet" type="text/css" href="/rsc/css/msdropdown/dd.css" />
        </head>
    Ces deux fichiers sont inclus sur toutes les pages.
    L'hébergeur Free annonce un PHP 5.6 pourtant j'ai une fonction indéfinie lorsque je tente d'utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (session_status() == PHP_SESSION_NONE) { // PHP >= 5.4
        session_start();
    }
    Après avoir lu de nombreux forums et autres j'ai essayé l'encodage utf-8 sans bom (pourtant les accents sont mal affichés en français... ?).
    Je n'arrive pas à trouver d'où pourrait venir l'erreur, auriez-vous des pistes à suggerer ?

    Je vous remercie de votre patience.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu sembles douter que les sessions fonctionnent sur ton hébergement.
    Tu as fais un test simple pour vérifier ?

    A une époque il fallait créer le repertoire "sessions" sois même chez Free.

  3. #3
    Candidat au Club Avatar de blaoi
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Je ne doute pas des sessions, je m'interroge simplement sur mon code.
    Je ne doute pas non plus de Free car après plusieurs recherches de nombreuses personnes parviennent à les faire fonctionner.

    Et oui, le répertoire sessions était déjà créée.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Certes mais as-tu testé si ça fonctionnait bien pour toi avec un cas simple ?

  5. #5
    Candidat au Club Avatar de blaoi
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Problème résolu. Un simple souci de syntaxe bien caché.

    Merci pour l'aide apporté!

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

Discussions similaires

  1. Mes variables de session ne sont pas conservées
    Par emilek dans le forum Langage
    Réponses: 5
    Dernier message: 26/09/2007, 16h57
  2. Session et include => pas bon ménage ?
    Par shadeoner dans le forum Langage
    Réponses: 11
    Dernier message: 10/07/2006, 10h30
  3. [UBUNTU] Ne conserve pas ma configuration ?
    Par vdumont dans le forum Ubuntu
    Réponses: 1
    Dernier message: 05/04/2006, 02h07
  4. Réponses: 2
    Dernier message: 07/09/2005, 16h28
  5. Detecter le statut d'une session (commit ou pas)
    Par Loko dans le forum Oracle
    Réponses: 7
    Dernier message: 15/12/2004, 10h28

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