Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2751 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Gérer une connexion $_SESSION

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Gérer une connexion $_SESSION

n°2314229
lolight
Posté le 20-04-2018 à 15:59:54  profilanswer
 

Bonjour à tous,  
 
Je débute en dev, je me suis mis en tête de réaliser un petit projet pour apprendre le PHP.
 
Dans mon projet, j'ai une page index.php qui include navbar.php qui est mon menu.
Mon but est de faire en sorte que lorsqu'un user se connecte, le menu qu'il vois change.
 
J'aimerais savoir pourquoi mon code ne fonctionne pas, et qu'elle est la best practice pour gérer une session.
 

Code :
  1. index.php
  2. <!DOCTYPE html>
  3. <html lang="fr">
  4. <?php    include('pdo.php'); ?>
  5. <?php    include('navbar.php'); ?>


 

Code :
  1. navbar.php
  2. <ul class="nav navbar-nav">
  3.        <li>
  4.               <php?
  5.                             if (isset($_SESSION['id']))
  6.                             {
  7.                                 <a href="index.php?userid=<?php echo $_SESSION['id']; ?>">Accueil</a>
  8.                                 <a href="index.php?userid=.$_SESSION['id']">Accueil</a>
  9.                             }
  10.                             else
  11.                             {
  12.                                 <a href="index.php">Accueil</a>
  13.                             }
  14.                   ?>
  15.          </li>
  16. </ul>


 
Mon code à juste pour but de dire Si $_SESSION['id'] existe alors je lui affiche un lien qui va le rediriger vers l'accueil en lui passant sont id de session dans le liens.
Et si non je lui met le liens basique de redirection.
Il y a deux ligne parce que j'ai trouvé ces deux façons de faire mais aucune d'entre elle à l'air de fonctionner.
 
Autre question, quand on include une page on ouvre des balises PHP, cela veut-il dire que tout le code de la page sera interprété en PHP ?  
Parce que si oui, je devrais peut être pas ouvrir une balise php dans mon navbar.php.
 
Merci  :jap:  


Message édité par lolight le 20-04-2018 à 16:01:33

---------------
--- Mon topik d'Ach/Ven ---
mood
Publicité
Posté le 20-04-2018 à 15:59:54  profilanswer
 

n°2314239
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 20-04-2018 à 16:24:57  profilanswer
 

tu as placé un session_start() au début de ton code ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°2314246
mechkurt
Posté le 20-04-2018 à 16:32:41  profilanswer
 

que donne un

Code :
  1. var_dump($_SESSION['id']);


Comme dit plus haut, une session ca se démarre, et les variables doivent être remplis (si tu veux l'identifiant automatique tu doit appeler la fonction session_id ()).


---------------
D3
n°2314258
pluj
Posté le 20-04-2018 à 18:42:58  profilanswer
 

Lu,
 
à noter que c'est <?php et non <php?
 
+1 pour le session_start, sans oublier qu'il devrait être placé avant la moindre sortie (avant tout code HTML, echo, etc).
 
Tant qu'on y est, ne pas fermer les balises PHP pour les rouvrir derrière (cf tes include), le saut de ligne situé entre les deux serait envoyé au client et toute fonction d'entête (set(raw)cookie, header et session_start) s'en retrouverait "bloquée" (du moins pour un serveur configuré avec un output_buffering à off).
 
En fait toute cette partie :

Code :
  1. <php?
  2.                             if (isset($_SESSION['id']))
  3.                             {
  4.                                 <a href="index.php?userid=<?php echo $_SESSION['id']; ?>">Accueil</a>
  5.                                 <a href="index.php?userid=.$_SESSION['id']">Accueil</a>
  6.                             }
  7.                             else
  8.                             {
  9.                                 <a href="index.php">Accueil</a>
  10.                             }
  11.                   ?>


N'est pas bonne, il y a mélange PHP/HTML.
 
UNE correction possible :

Code :
  1. <?php
  2. if (isset($_SESSION['id'])):
  3. ?>
  4.    <a href="index.php?userid=<?= $_SESSION['id'] ?>">Accueil</a>
  5.    <a href="index.php?userid=<?= $_SESSION['id'] ?>">Accueil</a>
  6. <?php
  7. else:
  8. ?>
  9.    <a href="index.php">Accueil</a>
  10. <?php
  11. endif
  12. ?>

Message cité 1 fois
Message édité par pluj le 20-04-2018 à 18:46:15
n°2314262
lolight
Posté le 20-04-2018 à 20:37:28  profilanswer
 

Pour commencer, merci à vous 3 pour votre lecture et les réponses apportées.  :jap:  
 

Harkonnen a écrit :

tu as placé un session_start() au début de ton code ?


 
J'avais bien mis un session_start() dans mon fichier pdo qui est include juste avant.
J'ai oublié de le préciser, méa culpa  :sarcastic:  
 


 
Pour le var dump, cela me donne un encadré blanc avec le texte suivant :  

Code :
  1. D:\Install\wamp64\www\navbar.php:21:string '4' (length=1)


 


Bien vu pour le php?, j'ai tellement trituré mon bout de code dans tout les sens que j'ai finis par écrire mes balises avec des fautes.
 
Du coup, il faut que je revois mon code parce que j'ai du me mélanger les pédales avec le php/html à d'autre endroits, c'est surement ça qui n'allais pas.
En corrigeant la syntaxe ça fonctionne merci.
 
Si je peux me permettre, que veux dire cette partie ? Ça lui dit d'afficher le contenus de $_SESSION['id'] grâce au "=" ?
<?= $_SESSION['id'] ?>
 
En tout cas merci à vous, vous m'avez aidé à retirer épine qui m'a pas mal emmerdé  :D


Message édité par lolight le 20-04-2018 à 20:39:30

---------------
--- Mon topik d'Ach/Ven ---
n°2314269
MaybeEijOr​Not
but someone at least
Posté le 20-04-2018 à 22:01:57  profilanswer
 

Pour répondre rapidement à la dernière question, c'est simplement une syntaxe écourtée :
http://php.net/manual/fr/function.echo.php
http://php.net/manual/fr/ini.core. [...] t-open-tag

 

Tout comme tu peux choisir d'écrire un If avec des accolades :

Code :
  1. if (...) {
  2.   ...
  3. } else {
  4.   ...
  5. }


Ou par mot-clés :

Code :
  1. if (...):
  2.   ...
  3. else:
  4.   ...
  5. endif;


Message édité par MaybeEijOrNot le 20-04-2018 à 22:03:58

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2314338
lolight
Posté le 23-04-2018 à 10:44:48  profilanswer
 

Ah merci pour l'info et les liens de la doc.  :jap:  
Pratique comme raccourcis, ça évite de mettre des points d’interrogation après un php   :whistle:  
 :D


---------------
--- Mon topik d'Ach/Ven ---

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Gérer une connexion $_SESSION

 

Sujets relatifs
comment gérer correctement les rechargements des importsConnexion à travers un PC
Laravel connexion FacebookConstructeur, base de données et session
Connexion à la base impossible sur 1 PCConnexion base access MDE
lister les champs d'une table en connexion odbcSysteme de session
PHP Session <==> Coockie[Joomla]Recherche de Composant pour gérer une "bibliothèque"
Plus de sujets relatifs à : Gérer une connexion $_SESSION


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR