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 :

Quoi mettre en premier ? session_start ou include ?


Sujet :

Langage PHP

  1. #1
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut Quoi mettre en premier ? session_start ou include ?
    Bonjour,
    Entre tous les trucs qu'il faut mettre en premier dans un code, on se demande parfois quoi choisir ?
    Je mets direct un exemple :
    On tient pour acquis que je n'utilise JAMAIS de variables de sessions dans mes classes directement, mais que je les passe le cas échéant en paramètres "neutralisés"...
    Quelle est la meilleure pratique ?
    Méthode 1
    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(); 
    spl_autoload_register(function ($class) {
        include '../classes/' . $class . '.class.php';
    });
    if(empty($_SESSION['is_connected'])){
       header('location:../login.php');
       exit;
    }
    else{
       //traitement
    }
    ?>
    Méthode 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
    spl_autoload_register(function ($class) {
        include '../classes/' . $class . '.class.php';
    });
    session_start();
    if(empty($_SESSION['is_connected'])){
       header('location:../login.php');
       exit;
    }
    else{
       //traitement
    }
    ?>
    Question connexe 1 :
    Ajouter à cela que j'ajoute toujours dans mes applis un fichier config.php qui comporte des constantes essentielles à l'application courante.
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //en dev
    //define('APPLI_URL','http://dev_mon_appli'.'.com');
    //define('APPLI_PATH','/www/dev/mon_appli');
    //en prod
    define('APPLI_URL','http://mon_appli'.'.com');
    define('APPLI_PATH','/www/mon_appli');
    Donc vous vous doutez que ça m'arrange ensuite de mettre des liens absolus via ces constantes...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    include('../config.php');
    spl_autoload_register(function ($class) {
        include APPLI_PATH.'/classes/' . $class . '.class.php';
    });
    if(empty($_SESSION['is_connected'])){
       header('location:'.APPLI_PATH.'/login.php');
       exit;
    }
    Et du coup, le fichier config doit aussi "venir en premier"... mouarf... Ca fait encore un sacré jeu de combinaisons de premier parmi les premiers...
    Mais on verra ça quand vous aurez répondu à combinaison numéro 1 lol...


    Question connexe 2 :

    include ou require ?
    Ceci a-t-il grande importance ?
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  2. #2
    Invité
    Invité(e)
    Par défaut
    Hello,

    1- session_start() en toute 1ere instruction.
    Qui sait ce qui pourra se trouver ensuite dans les fichiers inclus ?

    J'irai plus loin. Puisqu'on peut avoir des fichiers susceptibles d'être utilisés indépendemment ou en inclusion, je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php if(empty(session_id())) session_start();
    Et le tour est joué : on peut l'avoir dans plusieurs fichiers sans générer d'erreur.



    2- include() ou require() ?
    Voir la DOC !
    En cas d'erreur, le comportement est différent.

    require est identique à include mis à part le fait que lorsqu'une erreur survient, il produit également une erreur fatale de niveau E_COMPILE_ERROR.
    En d'autres termes, il stoppera le script alors que include n'émettra qu'une alerte de niveau E_WARNING, ce qui permet au script de continuer.
    3- par conséquent : si tu as un fichier config.php, tu l'inclus en require en tete de tes fichiers avec, DEDANS, l'ouverture de la session !

    config.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php if(empty(session_id())) session_start();
    // ------------
    // autoload
    spl_autoload_register(function ($class) {
        require_once( __DIR__.'/classes/' . $class . '.class.php';
    });
    // ------------
    // Config : constantes,......
    .....
    // ------------
    // Connexion à la bdd
    $pdo = .....;
    Fichier xxxxx.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php require_once( __DIR__.'/config.php' );
    .....
    • require_once() : une seule fois
    Dernière modification par Invité ; 25/04/2018 à 11h20.

  3. #3
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Thanks Jreaux, je vais tester et étudier tout ça.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

Discussions similaires

  1. [Cookies] Cookie, mais quoi mettre dedans ?
    Par jexl dans le forum Langage
    Réponses: 2
    Dernier message: 19/02/2007, 23h28
  2. Réponses: 2
    Dernier message: 13/05/2006, 13h02
  3. mettre en premier plan JPopupMenu??
    Par ricardvince dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 09/05/2006, 13h27
  4. [VBA] Mettre au premier plan par VBA?
    Par Caroline1 dans le forum Access
    Réponses: 9
    Dernier message: 02/05/2006, 22h49
  5. Comment mettre le premier element DbLookUpCombo
    Par CheGueVerra dans le forum Bases de données
    Réponses: 1
    Dernier message: 02/12/2004, 20h45

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