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 :

Ou créer ma variable Session ?


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 29
    Points : 26
    Points
    26
    Par défaut Ou créer ma variable Session ?
    Salut,

    Pour info j’essaie de faire ma sauce mvc...

    Bon jusque là je gére mon inscription et mon login, sauf que lorsque je me connect via mon formulaire de login je crée une variable session via mon contrôleur et je fais un include d'une nouvelle page et je voudrais ma variable session dans une partie d'un include qui se fait avant via le controleur principal.
    Du coup ça le recup mais au 2eme rechargement de ma page...

    Contrôleur principal:
    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
    session_start();
    require_once("modele/inscription.php");
     
    include("vue/entete.php");
    include("vue/header.php");
    include("vue/menu.php");
     
    if(!isset($_REQUEST['action'])){
        $action = 'login';
    }else{
        $action = $_REQUEST['action'];
    }
     
    switch($action){
     
        case 'login' || 'inscription':
            include("controleur/c_authentification.php");
            break;
    }
     
    include("vue/footer.php");
    ?>

    Controleur /c_authentification.php: (partie du code en question)
    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
    switch($action){
     
        case 'logout':
            unset($_SESSION['user']);
            include("vue/accueil.php");
            break;
     
        case 'login':
     
            if(isset($_POST['submit_login'])){
     
                if(isset($_POST['login']) && !empty($_POST['login']) &&
                isset($_POST['pass']) && !empty($_POST['pass'])){
                    $login = trim($_POST['login']);
                    $password = trim($_POST['pass']);
     
                     if(empty($login) || empty($password)){
                         $_SESSION['message']['error'] = "Le formulaire est incomplet !";
                     }else if(user_exist($login, $password)){
                         $_SESSION['user'] = $login;
                         include("test.php");
                     }
                }else{
                    $_SESSION['message']['error'] = "Le formulaire est incomplet !";
                    include("vue/login.php");
                }
                unset($_SESSION['message']);
            }else{
                include("vue/login.php");
            }
            break;
    ET c'est dans mon menu que je voudrais retrouver la valeur de $_SESSION['nom'].
    Mais actuellement, c'est forcement pas possible vu que le menu est inclut avant.

    menu.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <div id="menu">
        <?php 
            if(isset($_SESSION['user']) && !empty($_SESSION['user'])){
                echo "<p>Bonjour, ".$_SESSION['user']."<a href='index.php?action=logout'>Logout</a></p>";
            }
        ?>
     
    </div>
     
    <div id="content">
    Voilà mon petit problème, quelle solution me préconisez vous ?
    Par avance, merci pour vos réponses et conseils !

  2. #2
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Pour info j’essaie de faire ma sauce mvc...
    D'après ton code tu n'as pas du tout du MVC !!!

    Il faut que tu décomposes ton controleur principal de ta vue menu.php or tu fais un include

    Je vais te donner les grandes lignes par rapport à ton code puis tu essayeras de les apppliquer.

    Controleur principal:
    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
     
    <?php
    session_start();
    require_once("modele/inscription.php");
     
    // Si tu veux utiliser la session mais sinon tu peux aussi par les get et les post
    // Bref comme tu le désire mais tu récuppéres $actions
    switch($action){
     
        case 'login' || 'inscription':
            // Redirection vers la vue du login
            break;
        case 1 action provenant d'une vue 1:
            // Traitement et Redirection vers une vue
            break;
        case 2 action provenant d'une vue 2:
            // Traitement et Redirection vers une vue
            break;
    }
    ?>
    Une vue quelconque (les lignes du corps html de base):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    include("vue/entete.php");
    include("vue/header.php");
     
    // include du code html concernée par la vue comme par ex ci dessous
    include("vue/menu.php");
     
    // Traitement, formulaires en co
     
    include("vue/footer.php");
    ?>
    Ensuite sur un submit du formulaire, tu repasses par le controleur principal ou un controleur particulier comme Controleur /c_authentification.php pour une décomposition plus finie ...

  3. #3
    Membre habitué Avatar de alejandro
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2004
    Messages : 167
    Points : 188
    Points
    188
    Par défaut
    Bonjour,

    Tout simplement en faisant un return au lieu d'un include dans ton fichier c_authentification.php et en mettant ton code dans une fonction comme ceci :

    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
    function handleAction($action)
    {
    switch($action){
     
        case 'logout':
            unset($_SESSION['user']);
            return "vue/accueil.php";
     
        case 'login':
     
            if(isset($_POST['submit_login'])){
     
                if(isset($_POST['login']) && !empty($_POST['login']) &&
                isset($_POST['pass']) && !empty($_POST['pass'])){
                    $login = trim($_POST['login']);
                    $password = trim($_POST['pass']);
     
                     if(empty($login) || empty($password)){
                         _SESSION['message']['error'] = "Le formulaire est incomplet !";
                     }else if(user_exist($login, $password)){
                         $_SESSION['user'] = $login;
                         return "test.php";
                     }
                }else{
                    $_SESSION['message']['error'] = "Le formulaire est incomplet !";
                    return "vue/login.php";
                }
                unset($_SESSION['message']);
            }else{
                return "vue/login.php";
            }
            break;
    }
    Ainsi tu peux gérer ton action avant d'inclure ton menu et faire ton include après avoir inclus le menu comme ceci :

    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
    <?php
    session_start();
    require_once("modele/inscription.php");
     
    include("controleur/c_authentification.php");
     
    $action = ( isset( $_REQUEST['action'] ) )
               ? $_REQUEST['action'] : 'login';
     
    switch($action)
    { 
        case 'login' || 'inscription':
            $myInclude = handleAction($action)
            break;
        default: $myInclude = FALSE;
    }
     
    include("vue/entete.php");
    include("vue/header.php");
    include("vue/menu.php");
     
    if ( $myInclude ) require($myInclude);
     
    include("vue/footer.php");
    ?>
    Mais effectivement c'est un peu brouillon.
    Bon courage

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 29
    Points : 26
    Points
    26
    Par défaut
    Merci, pour vos réponses...

    @Fench : Du coup j'ai essayé de reconstruire avec tes conseils et ça fonctionne très bien. Merci !

    Maintenant, j'ai mis un système dans mon contrôleur principal qui me permet de ne pas afficher certaine pages quand je ne suis pas connecté.
    Mais je trouve mon système pas top du tout, auriez vous mieux à me suggérer ?
    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
    <?php
    session_start();
     
    require_once("modele/inscription.php");
    require_once("modele/flux_horoscope.php");
    require_once("modele/xml_zodiac.php");
     
    unset($_SESSION['message']);
     
    if(!isset($_SESSION['user'])){
        if(isset($_GET['action']) && ($_GET['action'] == 'your_zodiac' || $_GET['action'] == 'horoscope' || $_GET['action'] == 'reset_your_zodiac')){
             $action = 'inscription';
        }else{
            $action = (isset($_GET['action']))? $_GET['action'] : 'accueil';
        }
    }else{
        $action = (isset($_GET['action']))? $_GET['action'] : 'accueil';
    }
     
     
    switch($action){
            case 'accueil':
                include('vue/accueil.php');
                break;
            case 'logout':
                include("controleur/c_authentification.php");
                break;
            case 'inscription':
            case 'login':
                include("vue/inscription.php");
                break;
            case 'zodiac':
                include("vue/zodiac/zodiac.php");
                break;
            case 'your_zodiac':
                include("vue/zodiac/your_zodiac.php");
                break;
            case 'reset_your_zodiac':
                include("vue/zodiac/your_zodiac.php");
                break;
            case 'horoscope':
                include("vue/zodiac/horoscope.php");
                break;
            case 'contact':
                include('vue/contact.php');
                break;
            default :
                include('vue/error.php');
    }
     
    ?>

Discussions similaires

  1. Créer une variable de session dos en vba
    Par batama dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/10/2008, 11h30
  2. JSP: Créer une variable de session
    Par mcburger dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 07/05/2007, 13h46
  3. créer une variable de session
    Par NicoO_O dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 15/04/2007, 22h14
  4. ouvrir une session et créer les variables de session
    Par chorokari dans le forum Langage
    Réponses: 2
    Dernier message: 07/11/2006, 14h11
  5. Réponses: 8
    Dernier message: 06/02/2006, 16h38

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