< Afficher du contenu que pour les personnes authentifiées >
Il est parfois utile de n’afficher du contenu qu’aux utilisateurs authentifiés, que cela soit un bout de skelette, ou un skelette tout entier. Voici comment faire.
Le principe
Si le visiteur est authentifié, la variable $auteur_session['statut'] n’est pas vide. Il suffit donc de faire un simple test sur cette variable et le tour est joué.Exemple
if ($auteur_session['statut']=="") { ?>
#LOGIN_PUBLIC
<? }else { ?>
contenu protégé
<? } ?>
En plaçant ce code en haut de votre skelette, si la personne ne s’est pas authentifiée, elle se vera proposer le formulaire d’authentification. Autrement, elle verra ce que vous avez mis à la place de "contenu protégé".
7 commentaires
Neuneu se répond à lui même, au cas où ça pourrait en aider un autre...
Il a relu la doc SPIP et constaté que c’était très simple :
Il suffit de clôner les squelettes en les suffixant -2, par exemple : article-2.html et d’ajouter avant le code html une demande d’authentification...Ca marche.
Neuneu !
Bonjour, je suis novice en php. ce code m’intéresse mais je ne parviens pas à la mettre en place. concrètement, je voudrais le mettre sur le squelette article dont voici le code < ?php
$fond = "article" ; $delais = 24 * 3600 ;
include ("inc-public.php3") ;
?>
où dois-je coller votre code afin que cela fonctionne ? Merci d’avance :-)
Ca c’est pas ton skelette, c’est la page qui appelle ton skelette.
Le skelette, c’est la page article.html
Stéphane
Bonjour,
Je cherche à faire quelque chose d’un peu plus compliqué : je voudrais que pour certains articles, le forum ne soit accessible qu’à des utilisateurs autorisés par l’auteur de l’article. La liste des utilisateurs dépend donc de chaque article... et elle est bâtie dynamiquement : c’est l’auteur qui décidera si il y aura un tel forum, et qui sont les utilisateurs autorisés (ceux-ci seront d’autres auteurs, au fait). Par ailleurs j’aimerais que la protection soit assez efficace...
Une idée ?
Merci d’avance,
— Bertrand.
je pense qu’en l’état c’est impossible, mais as-tu essayé de jouer avec les mots-clés et les groupes de mots-clés ? imaginons un groupe de mots-clés "utilisateurs autorisés" contenant les identifiants des personnes autorisées à consulter l’article. il te reste à écrire un bout de php +javascript (getcookie) pour récupérer l’identifiant de la personne si elle est déjà identifiée. la suite tu la connais : si l’identifiant trouvé dans le cookie correspond à l’un de ceux autorisé alors afficher le lien (je dirais le formulaire, j’explique plus bas pourquoi) en question.
pb si qlq’un regarde le code il peut prendre le lien et accéder au forum. il faudrait alors voir à n’utiliser que du php, ainsi le code n’apparaît que lorsque la personne est autorisée.
ATTENTION ! ! ! cette méthode suppose que, pour que la protection soit efficace, les forums soient insérés dans les articles. en effet, si tel n’est pas le cas, alors quiconque peut observer la syntaxe des URLs pour modifier l’ID_FORUM et outrepasser cette protection.
bonne chance et bonne année :)
Cette méthode est en effet très bonne. Le seul soucis qu’il reste, est que les documents joints à un article sont stockées dans le répertoire IMG. Si quelqu’un accède à ce répertoire, ou tape l’adresse directe d’un document, il pourra y accéder, qu’il soit authentifié ou non. Une personne non authentifiée aura donc accès à tous les documents. Comment faire pour protéger l’accès à ce répertoire, pour que tout le monde ait accès aux documents "publics", et seules les personnes authentifiées aux documents "privés" ?

Question de neuneu ?
Les articles que j’ai lus, concernant la protection de pages sous SPIP, me semblent répondre à la question : "Comment obtenir un affichage différent d’une même page, selon le statut du visiteur ?". A moins que neuneu n’ait rien compris, ce qui n’est pas complètement impossible.
Mais si l’on a construit un site SPIP avec seulement 2 grands SECTEURS :
Comment protéger TOUT le secteur 2, rubriques, sous-rubriques, articles ?
Merci de votre aide.