Submitted by kirby4 on
Bonjour,
Je souhaiterais savoir s'il existe une fonction PHP pour savoir si une session est ouverte sous Drupal. C'est pour modifier la position d'un élément selon si une session est ouverte ou pas.
Merci d'avance,
Kirby
En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".
Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact
De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.
Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".
Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.
Submitted by kirby4 on
Bonjour,
Je souhaiterais savoir s'il existe une fonction PHP pour savoir si une session est ouverte sous Drupal. C'est pour modifier la position d'un élément selon si une session est ouverte ou pas.
Merci d'avance,
Kirby
La variable globale $user
Permalien Soumis par chu le 8 Juin, 2010 - 22:44
La variable globale $user stocke l'uid de l'utilisateur courant.
L'uid est 0 dans le cas d'un utilisateur "anonyme"
Merci beaucoup, je vais
Permalien Soumis par kirby4 le 8 Juin, 2010 - 22:47
Merci beaucoup, je vais tester cela tout de suite.
(malheureusement) en drupal
Permalien Soumis par Yoran le 9 Juin, 2010 - 00:19
(malheureusement) en drupal une session est ouverte que l'utilisateur soit anonyme ou authentifié, ce qui n'est pas top pour les perfs, mais c'est une autre histoire. J'imagine que tu veux donc savoir non pas si une session est ouverte (ce qui est toujours le cas) mais si cette session correspond à un utilisateur anonyme ou authentifié.
Pour compléter la réponse de chu, il y a aussi une fonction toute faite pour cela : user_is_anonymous(), il suffit donc de tester !user_is_anonymous().
PS: pour $user, je conseille pour éviter les gags de sécurité de lui préférer $GLOBALS['user'].
pour $user, je conseille pour
Permalien Soumis par chu le 9 Juin, 2010 - 10:08
pour $user, je conseille pour éviter les gags de sécurité de lui préférer $GLOBALS['user']
Je n'étais pas au courant de cette "bonne pratique". Tu as un lien qui explique ces "gags de sécurité"?
Merci d'avance.
Oh bé je vais te l'expliquer
Permalien Soumis par Yoran le 9 Juin, 2010 - 10:31
Oh bé je vais te l'expliquer direct :) Imagine quelque part, collé dans le thème, et de préférence dans un XXX-YYY-ZZZ.tpl.php (oui, y'en a qui n'aiment définitivement pas template.php...)
<?php
// on n'aime pas les anonymes !!!
global $user;
if ($user->uid==0) {
drupal_access_denied();
exit();
}
?>
<bla> bla
...
bla </bla>
<?php
// 40 kilomètres plus loin, un autre dev a besoin d'ajouter un autre traitement, au hasard, une liste des utilisateurs
$cursor=db_query('select uid from user where plouf plouf, je veux tous les auteurs');
// Et là, patatra, le gars a complètement oublié son global au tout début, il trouve
// logique de faire une variable $user, et du coup, l'utilisateur actuellement connecté pour
// qui cette page est construite, va hériter des droits du dernier de la boucle....
while ($user=db_fetch_object($cursor)) {
...
}
?>
Et ce gag, sans rire, je l'ai vu des tonnes de fois.... Et toi, tu passes comme un âne des heures à comprendre pourquoi un "simple utilisateur" devient brutalement "auteur" et peu du coup foutre le brun en éditant des contenus, etc...
Idéalement, faudrait que dans drupal, $user soit proscrit et remplacé par une fonction du genre user($user=NULL).
C'est très clair
Permalien Soumis par chu le 9 Juin, 2010 - 11:53
C'est très clair maintenant...
Merci pour cette explication
Génial, le
Permalien Soumis par kirby4 le 9 Juin, 2010 - 14:45
Génial, le "if($GLOBALS['user']->uid==0)..." a fonctionné à merveille, c'est exactement ce que je voulais.
Toutefois, juste pour le spécifier, je n'avais pas trop besoin de sécurité, c'est juste pour qu'un élément soit positionné différemment de si un utilisateur est connecté ou non. Mais je crois qu'il vaut mieux avoir de bonnes habitudes :)
Merci à tous!