Tout verrouiller

Comment protéger par mot de passe des rubriques ou des articles

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Comment sans bidouiller dans le noyau de Spip on peut à l’aide des mots clés des boucles et de php placer des articles et des rubriques en acces protégé.

Introduction : protéger son site avec SPIP

Restreindre l’accès à certaine partie de son site semble un besoin récurrent des webmasters de sites sous SPIP. Plusieurs solutions existent, la plus classique étant celle expliquée (un peu succintement) sur le site officiel qui permet de réserver certaines parties du site aux seuls membres authentifiés (rédacteurs ou visiteurs enregistrés). Ici nous allons détailler une autre méthode, à l’aide des mots clés, qui est loins d’être parfaite, mais qui suffira largement dans la plupart des cas simples.

Qu’est-ce que cette contrib permet de faire ?

Permettre aux administrateurs du site de placer certains articles
ou certaines rubriques en accès par mot de passe.

On pourra avec ceci créer autant de mots de passe que l’on voudra.
Protéger la rubrique les saucisses avec le mot de passe sauciflon sec
et la rubrique jambon avec le mot de passe jamblon sec.

Je protégerai pas mon compte en banque avec mais ça risque d’être suffisant pour la plupart
des besoins.
Plus precisement, allez voir un peu plus loin dans l’article : Les limitations du systeme.

C’est surtout très facile a mettre en place.

Installation

moins de 5 minutes
-  Décompresser acces.zip et installer controle_acces_rubrique.html controle_acces_rubrique.php3
controle_acces_article.html controle_acces_article.php3 FA2.php3 et enregistre_session2.php3 à
la racine de votre site.

-  Créer un groupe de mot clé que vous appelerez « acces multiple »,vous cocherez les bonnes cases
pour que ce groupe ne soit accessible qu’aux administrateurs et puissent être associés aux articles et
aux rubriques.

-  Notez soigneusement le numéro id_groupe de ce groupe de mots clés, vous en avez impérativement
besoin !!! nous le nommerons désormais <votre id_groupe>
(attention ne confondez pas id_mot avec id_groupe)

-  dans ce groupe créer 2 mots « sauciflon sec » et « jamblon sec »

-  puis au TOUT DÉBUT (cad à la premiere ligne au premier caractère) de article.html
placer ce code.

<INCLURE(controle_acces_article.php3){id_groupe=<votre id_groupe>}{id_article}>

-  puis au TOUT DÉBUT (cad à la premiere ligne au premier caractere) de rubrique.html
placer ce code.

<INCLURE(controle_acces_rubrique.php3){id_groupe=<votre id_groupe>}{id_rubrique}>
  1. Choisissez un article ou une rubrique de votre choix , associez le mot « sauciflon sec » et cliquez
    sur aller voir en ligne. Rentrer « sauciflon sec » dans le Formulaire d’Accès (FA) et si tous se passe bien votre article
    ou votre rubrique apparaît.

Et voila c’est fini

Et pour les courageux voici

Les Explications

Nous présenterons ce travail en deux temps

-  Temps 1 : on implémentera un accès restreint pour les articles seulement
car c’est plus facile.
-  Temps 2 : En se servant de ce qui a été fait au temps 1
on implémentera l’accès restreint pour les rubriques, ce qui exige une démarche
d’acquisition des informations qui peuvent être éventuellement présentes
dans les rubriques parentes.

Temps 1

-  controle_acces_article.html

<BOUCLE_acces(MOTS){id_groupe}{id_article}{0,1}>
<?php $acces='#TITRE'; ?>
</BOUCLE_acces>
<?php
//si la variable $acces a ete cree alors on lance le script
//cad si un acces restreint est bien associé a l'article
    session_start();
    //echo "variable de session".$_SESSION['$acces'];
if (isset($acces)){
    //recuperation du nom de script avec les arguments de requettes
    $origine=$HTTP_SERVER_VARS['SCRIPT_NAME']."?".$HTTP_SERVER_VARS['QUERY_STRING'];
    //on demarre une session

    //et on verifie si la variable $acces
    //est bien presente dans le contexte de session
    //et si le temps qu'elle contient n'est pas trop vieux
    //cad depasse de 5 minutes
    if ( isset($_SESSION['$acces']) and ( (date("U")-$_SESSION['$acces']) < 10 )and ($_SESSION['demande_enregistrement']==$acces) ){

        //on raffraichit la valeur
        //et on l'enregistre dans le contexte de session
        $_SESSION['$acces']=date("U");
    }else{
        //l'utilisateur n'a pas ete enregistre ou sa date d'enregistrement est trop vielle
        //on efface $$acces du contexte de session
        unset($_SESSION['$acces']);
        // a la place on enregistre une variable demande_enregistrement dont la
        //valeur depend de acces
        $_SESSION['demande_enregistrement']=$acces;
        //on dirige l'utilisateur vers le FA en sauvant son article demande
        header("location: FA2.php3?origine=$origine");
    }
}

Attention il ne doit y avoir aucun espace entre le début du fichier et ce script
car on fait appel à la fonction header qui ne peut être appelé que si aucune information
n’a été expédié au navigateur avant son invocation.

-  Le FA ou Formulaire d’Accès

Il est sans mystère voici son code FA2.php3
Il va collecter un mot de passe qui sera envoyé à un script de contrôle et d’enregistrement

<?php
//correspond a l'article demandé
$origine=$HTTP_GET_VARS['origine'];
//Si le mot de passe est erronée on renvoie ce message
$erreur=$HTTP_GET_VARS['erreur'];
?>
<html>
<body onload="mdp.getFocus()">
<?php if(isset($erreur)) echo $erreur; ?>

<div style='position:absolute;top:30%;left:30%'>
<form action="enregistre_session2.php3?origine=<?php echo $origine; ?>" method="POST" >
<p>l'acces a cette rubrique (ou article) est protégé par un mot de passe</p>
<input type=password name="mdp">
<input type=submit value="valider">
</form><br>
<a href="sommaire.php3">Retour au site publique</a>
</div>
</body>

-  Puis le script d’enregistrement

enregistre_session.php3

<?php
$origine=$HTTP_GET_VARS['origine'];
$mdp=$HTTP_POST_VARS['mdp'];
session_start();
//on recupere la demande d'enregistrement à $acces
$acces=$_SESSION['demande_enregistrement'];
//debug echo "mdp: $mdp acces : $acces";
if ($mdp==$acces){
    $_SESSION['$acces']=date("U");
    //debug echo "valeur de _SESSION  est ".$_SESSION['$acces'];
    header("location: $origine");
}else{
    $erreur="votre mot de passe est erroné votre administrateur l'a peut-etre change";
    header("location: FA2.php3?erreur=$erreur&origine=$origine");
}
?>

Ce script récupère la demande d’enregistrement qui est une variable de session qui contient le titre
du mot clé. Puis il compare cette valeur avec le mot de passe entré dans FA2.php3 si celui-ci est
bon il crée la variable de session $acces qui contient la date à laquelle l’utilisateur s’est enregistré

Et voila l’affaire est dans le sac si vous m’avez lu jusque
la je félicite votre patience :)

Temps 2 : généralisations aux rubriques

La généralisations aux rubriques est un peu plus subtile car il faut
pouvoir gérer les problèmes d’acquisition (qui sont très bien gérées dans Zope par ailleurs)

En effet si une rubrique se trouve être la sous rubrique d’une rubrique en accès par mot de passe
elle doit pouvoir hériter de ses propriétés. Tous les articles d’une telle rubrique aussi.

Ce qui va se résoudre à coup de boucle hiérarchie.

controle_acces_rubrique.html

<?php
    //vérifie si une rubrique parente
    //est en acces par mot de passe
?>
<BOUCLE_contexte_rubrique(RUBRIQUES){id_rubrique}>
<BOUCLE_hierarchie_acces(HIERARCHIE){id_rubrique}>
<BOUCLE_parent_acces(MOTS){id_rubrique}{id_groupe}>
<?php $acces='#TITRE'; ?>
</BOUCLE_parent_acces>
</BOUCLE_hierarchie_acces>
</BOUCLE_contexte_rubrique>
<?php
    //vérifie si la rubrique elle meme
    //est en acces par mot de passe
?>
<BOUCLE_acces_rubrique_simple(MOTS){id_rubrique}{id_groupe}>
<?php $acces='#TITRE'; ?>
</BOUCLE_acces_rubrique_simple>
<?php
//si la variable $acces a ete cree alors on lance le script
//cad si un acces restreint est bien associé a la rubrique
    session_start();
    //echo "variable de session".$_SESSION['$acces'];
if (isset($acces)){
    //recuperation du nom de script avec les arguments de requettes
    $origine=$HTTP_SERVER_VARS['SCRIPT_NAME']."?".$HTTP_SERVER_VARS['QUERY_STRING'];
    //on demarre une session

    //et on verifie si la variable $acces
    //est bien presente dans le contexte de session
    //et si le temps qu'elle contient n'est pas trop vieux
    //cad depasse de 5 minutes
    if ( isset($_SESSION['$acces']) and ( (date("U")-$_SESSION['$acces']) < 10 ) and ($_SESSION['demande_enregistrement']==$acces)){

        //on raffraichit la valeur
        //et on l'enregistre dans le contexte de session
        $_SESSION['$acces']=date("U");
    }else{
        //l'utilisateur n'a pas ete enregistre ou sa date d'enregistrement est trop vielle
        //on efface $$acces du contexte de session
        unset($_SESSION['$acces']);
        // a la place on enregistre une variable demande_enregistrement dont la
        //valeur depend de acces
        $_SESSION['demande_enregistrement']=$acces;
        //on dirige l'utilisateur vers le FA en sauvant son article demande
        header("location: FA2.php3?origine=$origine");
    }
}

et on fait pareil avec controle_acces_article.html

<?
    //verifie si la rubrique ou rubrique parente contenant
    //l'article est en acces par mot de passe
?>
<BOUCLE_contexte_article(ARTICLES){id_article}>
<BOUCLE_contexte_rubrique(RUBRIQUES){id_rubrique}>
<BOUCLE_hierarchie_acces(HIERARCHIE){id_rubrique}>
<BOUCLE_parent_acces(MOTS){id_rubrique}{id_groupe}>
<?php $acces='#TITRE'; ?>
</BOUCLE_parent_acces>
</BOUCLE_hierarchie_acces>
</BOUCLE_contexte_rubrique>
</BOUCLE_contexte_article>
<?
    //verifie si la rubrique ou rubrique parente contenant
    //l'article est en acces par mot de passe
?>
<BOUCLE_acces_article_simple(MOTS){id_groupe}{id_article}{0,1}>
<?php $acces='#TITRE'; ?>
</BOUCLE_acces_article_simple>
<?php
//si la variable $acces a ete cree alors on lance le script
//cad si un acces restreint est bien associé a l'article
    session_start();
    //echo "variable de session".$_SESSION['$acces'];
if (isset($acces)){
    //recuperation du nom de script avec les arguments de requettes
    $origine=$HTTP_SERVER_VARS['SCRIPT_NAME']."?".$HTTP_SERVER_VARS['QUERY_STRING'];
    //on demarre une session

    //et on verifie si la variable $acces
    //est bien presente dans le contexte de session
    //et si le temps qu'elle contient n'est pas trop vieux
    //cad depasse de 5 minutes
    if ( isset($_SESSION['$acces']) and ( (date("U")-$_SESSION['$acces']) < 10 ) and ($_SESSION['demande_enregistrement']==$acces)){

        //on raffraichit la valeur
        //et on l'enregistre dans le contexte de session
        $_SESSION['$acces']=date("U");
    }else{
        //l'utilisateur n'a pas ete enregistre ou sa date d'enregistrement est trop vielle
        //on efface $$acces du contexte de session
        unset($_SESSION['$acces']);
        // a la place on enregistre une variable demande_enregistrement dont la
        //valeur depend de acces
        $_SESSION['demande_enregistrement']=$acces;
        //on dirige l'utilisateur vers le FA en sauvant son article demande
        header("location: FA2.php3?origine=$origine");
    }
}

Limitations du système

-  Un accès par http://mon_site.org/mot.php3?id_mot=XX permet de deviner le mot de passe en incrémentant simplement XX à partir de 1, sur un site contenant peu de mots clés, facile de le trouver, pour remedier à cela il faut supprimer le couple de fichiers mot.php3/mot.html, et y repenser en cas de mise à jour de SPIP.
Ou alors dans le squelette mots.html modifier la Boucle MOTS : <BOUCLE_de_mots(MOTS){les criteres deja present}{id_groupe!=<groupe  des codes secret>}>

-  Il faut s’assurer que les divers squelettes alternatifs ou récapitulatifs (backend, resume, nouveautes, /oo, imprimer, plan, recherche, etc...) n’afficheront pas d’articles qui exigent un mot de passe. C’est très frustrant pour un visiteur de se faire présenter une liste d’articles dont on lui refuse l’accès. Pour cela il faudra exclure les articles correspondants :
Par exemple a l’aide d’une première boucle et du critère doublons :

<BOUCLE_articlesproteges(ARTICLES){les criteres deja present}{id_groupe!=<groupe  des codes secret>}{doublons}></BOUCLE_articlesproteges>
<BOUCLE_principale(ARTICLES){mes criteres}{doublons}>...</BOUCLE_principale>
 

-  Il faut penser à ajouter quelques directives dans son fichier robots.txt pour que Google et compagnie n’indexent pas des articles accessibles par mot de passe.

Ouf, quel travail pour protéger quelques articles !

Discussion

59 discussions

  • Pascal

    Bonjour,

    Est-ce compatible avec SPIP 2.0 ?

    Merci

    Répondre à ce message

  • Bonjour,

    Est-ce que vous auriez une méthode simple pour protéger l’ensemble du site SPIP avec un login/mot de passe d’accès identique ?

    Merci

    Répondre à ce message

  • j’arrive pas àvoir pourquoi cela ne marche pas avec 1.91. message « Le fichier requis n’a pas été trouvé. Il peut s’agir d’une erreur technique. Veuillez réessayer ultérieurement. Si vous ne pouvez pas accéder au fichier après plusieurs tentatives, cela signifie qu’il a été supprimé » de mon fai ?
    une solution ?

    Répondre à ce message

  • Bonjour, je suis sur cette méthode depuis quelques jours et étant novice sous spip, je n’arrive pas tout seul à avancer.

    Je travaille sous la version 1.9b avec le squelette Alternative.

    J’ai décompressé et mis les fichiers acces.zip à la racine de mon site.

    J’ai créé un groupe avec un mots clé

    Je n’arrive pas à trouver le nom de mon ID_GROUPE, d’après la barre d’adresse c’est id_groupe=3

    j’ai modifié comme dans l’exemple les fichiers articles et rubriques dans le squelette alternative.(1er ligne)

    J’ai attribué à une rubrique le mot clés, rien ne marche au final

    Si quelqu’un pouvait m’aider, merci beaucoup.

    Répondre à ce message

  • 1

    J’utilise cet contrib sur notre site intranet et ca marche tres bien.

    Seul probleme : Meme si le repertoire /IMG est protege par htaccess il est toujours possible d’acceder aux fichiers (documents) qui se trouvent dans une page avec acces protege. Bien sur il faut connaitre le nom du fichier. Quelqu’un aurait trouve une astuce pour eviter ceci ? Merci !

    Répondre à ce message

  • merci pour cette contribution. Montre en main moins de 15 mn ! je suis impressionné... Marc

    Répondre à ce message

  • 1

    J’ai créé un groupe comme indiqué et je ne vois nulle part le numéro de ce groupe et donc je ne vois pas comment suivre la consigne :
    « Notez soigneusement le numéro id_groupe de ce groupe de mots clés, vous en avez impérativement besoin ! ! ! »

    Merci de vos éclaircicements (je suis en spip1.6)

    Répondre à ce message

  • 1

    je ne comprends pas ce que je dois faire, comment je dois le faire et surtout où je dois le faire :

    Créer un groupe de mot clé que vous appelerez « acces multiple »,vous cocherez les bonnes cases pour que ce groupe ne soit accessible qu’aux administrateurs et puissent être associés aux articles et aux rubriques.

    Si vous avez la gentillesse de me répondre détaillez au maximum la réponse, je fais partie des nuls qui débutent !
    Merci

    • Je me suis répondu a moi même ! Il fallait que je passe en interface complète (et non simplifiée)... A force d’essayer je vais finir par être moins nulle !

    Répondre à ce message

  • 1

    Je viens de passer à la version de Spip 1.9, est il possible d’installer cette contrib ?

    • Bonjour à tous

      je suis moi même très intéressé par cette contrib pour spip1.9
      merci

    Répondre à ce message

  • Un grand merci tout d’abord pour cette très bonne contrib..

    En bidouillant un peu les fichiers controle_acces_rubrique.html et controle_acces_article.html.
    J’ai réussi tout simplement à mettre un mot de passe qui sera caché, au lieu d’utiliser directement le mot-clé. qui passe par la variable $acces dans les deux fichiers.
    if (’#TITRE’==« mot-clé1 »)$acces=« tutu » ;else $acces=« tata » ;
    pour remplacer la ligne $acces=’#TITRE’ ;

    permettra donc d utiliser les mots de passe tutu pour le mot-clé « mot-clé1 » et tata pour l’autre..
    Dans le cas de plus de deux mot-clés, on pourra bien sur rajouter d’autres conditions.

    Voilà, en tout cas ça marche nickel chez moi.

    Il est vrai que les mots de passe sont directement visibles dans les fichiers controle_acces_rubrique.html et controle_acces_article.html. Mais je ne trouve pas ça très génant, du moins pas autant que leur visibilité danc le back-office

    Répondre à ce message

  • 6

    bonjour,
    l’idée est bonne mais je n’y arrive pas.
    y aurait-il une astuce non signalée ?
    cordialement
    Philippe

    • si vous voulez de l’aide via le forum merci de poser des questions précises (en plus ça permet d’améliorer l’article après)

    • Je suis daccord avec Dorian un peu plus de precisions dans votre echec nous aiderait bien. Sinon quelques precision classiques.

      Votre impléméntation de php doit supporter les sessions, vous devez vous etre assuré que partout ou dans l’article on vous indique de ne pas laisser d’espace blanc au debut du fichier vous ayez scrupuleusement respecté cette indication. Par ailleurs certains de mes amis utilisant easyphp m’ont signalé que ca buggait car mon serveur apache sur la mandrake ne considere pas un espace blanc de la meme maniere que celui de easyphp

      J’ai donc refait un fichier qui marche pour easy et pour le reste , vous le trouverez en piece jointe a cette article : acces_easy.zip, refaite la procedure.

      Bon courage

      Michael

    • Bonjour,
      Après avoir suivi les indications de l’article, Apache me sort des Warnings lors de l’accès à ma rubrique protégée (cf ci-dessous), et surtout l’accès ne demande pas le mot de passe affecté :-( (pas de FA). Merci pour toute info utile !

      Apache + PHP sous une Mandrake 9.1, browser Galeon 1.3.5.

      Warning : session_start() [function.session-start] : Cannot send session cache limiter - headers already sent (output started at /home/alex/public_html/CACHE/d/con-1-2.54f655:5) in /home/alex/public_html/CACHE/d/con-1-2.54f655 on line 10

      Warning : Cannot modify header information - headers already sent by (output started at /home/alex/public_html/CACHE/d/con-1-2.54f655:5) in /home/alex/public_html/CACHE/d/con-1-2.54f655 on line 34

    • Il s’agit simplement du fait que la redirection vers le formulaire d’enregistrement n’a pas pu avoir lieu parceque que tu n’as pas mis le code indiqué au « »tout« » debut de ton script, meme un simple caractere blanc provoque ce comportement.

      Essaye aussi avec le zip acces_easy
      @+

    • j’ai le même erreur que toi : OS Red Hat 9 et comme navigateur mozilla :(

    • J’utilise cet contrib sur notre site intranet et ca marche tres bien.

      Seul probleme :
      Meme si le repertoire /IMG est protege par htaccess il est toujours possible d’acceder aux fichiers (documents) qui se trouvent dans une page avec acces protege.
      Bien sur il faut connaitre le nom du fichier.
      Quelqu’un aurait trouve une astuce pour eviter ceci ?
      Merci !

    Répondre à ce message

  • Bonjour
    (sous spip 1.6)
    suite à des modifications sur notre serveur académique : Il faut savoir que nous sommes passé de apache-1.3 à apache-2
    mais la version de PHP est rigoureusement la même (4.3.10), avec la même configuration
    cette contrib que j’avais installé depuis le début ne fonctionne plus.
    Les messages type renvoyés sont :

    Warning : session_start() : Cannot send session cache limiter - headers already sent (output started at /home/www/html/iennyons/neo_site/CACHE/con-15-61.a6ceb1:7) in /home/www/html/iennyons/neo_site/CACHE/con-15-61.a6ceb1 on line 12

    J’ai la preuve que c’est ce qui pose problème puisque lorsque je supprime le code :

    <INCLURE(controle_acces_rubrique.php3{id_groupe=XX}{id_rubrique}>

    je n’ai plus de messages d’erreur

    Comment contourner ce problème ?

    Merci pour vos conseil

    Répondre à ce message

  • 4

    Bonjour

    Je viens d’installer cette contrib. malheureusement cela ne fonctionne pas vraiment :

    Sous Easyphp en locale, cette ligne d’erreur apparraît :

    Warning : Cannot send session cache limiter - headers already sent (output started at c :\program files\easyphp\www\alpc-extranet\inc-public.php3(53) : eval()’d code:2) in c :\program files\easyphp\www\alpc-extranet\inc-public.php3(20) : eval()’d code on line 4

    En ligne, j’ai beau taper le bon code, c’est toujours la page de FA qui reste à l’écran. Par contre la ligne de l’adresse c’est ainsi modifiée :

    http://www.xxx.fr/xxx/FA2.php3?erreur=votre%20mot%20de%20passe%20est%20erroné%20votre%20administrateur%20l’a%20peut-etre%20change&origine=

    J’ai l’impression que l’enregistrement de session ne peut pas se faire... Y’a-t-il une solution ?

    Merci

    SB

    • mtcocktail

      Je confirme j’ai la même erreur. et malheureusement comme une ligne est envoyé en trop dans le inc-public on ne peut pas faire de travail sur les sessions. Ce qui est marrant c’est que si vous êtes déjà authentifier dans l’espace d’admin, vous avez votre cookie d’admin en place et du coup le inc-public ne renvoie pas de ligne en trop. Et la contrib fonctionne dans ce cas là.

      But du jeux trouver la ligne ecrite dans le code de spip qui provoque une impossibilité de renvoyer une entête dans les squellettes.

    • pareil, est-ce que quelqu’un a pu trouver l’origine du problème ?

      existe-t’il d’autres moyens de limiter l’accès des certaines pages à certains utilisateurs seulement ?

    • alors effectivement, c’est un « bug » tordu, quand on est cookifié en tant qu’admin tout se passe bien, mais sinon on a cette erreur d’headers deja envoyés.
      La solution pour contourner ce problème, c’est d’ajouter sur la page d’accueil de votre site (usuellement sommaire.html) un pti bout de code qui va affecter un cookie admin bidon.
      Pas de danger, impossible d’acceder a l’interface d’admin avec juste ce cookie.
      voici donc le code a mettre tout en haut de votre fichier sommaire.html (cad a partir de la 1re ligne) :

      ?php
      if (empty($_COOKIE["spip_admin"])) {
      	setcookie("spip_admin","@fake");
      }
      ?>

      Voila, chez moi ca marche nickel
      A+

    • petit patch pour le fix ci dessus ! :P
      ne pas mettre @ dans la valeur du cookie spip admin, car cela fait apparaitre les boutons « recalculer » et « espace privé » (sans toutefois permettre l’acces a l’espace privé). Il suffit de mettre n’importe quoi d’autre ; ie :

      <?php
      if (empty($_COOKIE["spip_admin"])) {
      	setcookie("spip_admin",".fake");
      }
      ?>

      a+

    Répondre à ce message

  • 2

    Pour dissocier le mot-cle (appartenant au groupe de mot-clés réservé à la protection) qui sert a protéger une rubrique ou un article et le code d’acces qui sera donné par l’utilisateur,
    Il a été modifié le fichier enregiste_session.php3

    Deux rubriques sont actuellement protégée l’une par le motclé1, l’autre par motclé2.

    La premiere rubrique à laquelle a été associée le motclé1 est accessible par le code1 ou le code2
    La deuxième rubrique à laquelle a été associée le motclé2
    est accessible par le code2 uniquement ;

    Voici la modification du fichier

    enregistre_session_exemple.php3

    <?php
    
    $origine=$HTTP_GET_VARS['origine'];
    
    $mdp=$HTTP_POST_VARS['mdp'];
    
    session_start();
    
    //on recupere la demande d'enregistrement à $acces
    
    $acces=$_SESSION['demande_enregistrement'];
    
    // debug echo "mdp: $mdp acces : $acces";
    
    // debug echo "origine $origine";
    
    if ($acces=="motclé1") 
    
    {
    
     if (($mdp=="code1")  or ($mdp =="code2") )
    
        {
    
         $_SESSION['$acces']=date("U");
    
        //debug echo "valeur de _SESSION  est".$_SESSION['$acces'];
    
        header("location: $origine");
    
         }
    
      }
    
    elseif (($acces=="motclé2") and ($mdp=="code2"))
    
        {
    
        $_SESSION['$acces']=date("U");
    
        //debug echo "valeur de _SESSION  est ".$_SESSION['$acces'];
    
        header("location: $origine");
    
        }
    
    
    else
    
    {
    
        $erreur="votre mot de passe est erroné votre administrateur l'a peut-etre change";
    
        header("location: 
    FA2.php3?erreur=$erreur&origine=$origine");
    
    }
    
    ?>
    • bilboïd

      ça ne fonctionne toujours pas sous Spip 1.8.1 ou me trompe-je ?

    • mtcocktail

      ouai fonctionne pas ....

    Répondre à ce message

  • 2
    Nathalie

    Bonjour,

    J’ai installé cette contrib sur mon site et bizarrement, parfois, le mot de passe est refusé (réponse : Votre mot de passe est erroné. Le webmaster l’a peut-être changé.). Sur IE6 notamment mais pas sur tous les postes. Sur Firefox, aucun problème.
    Quelqu’un a-t’il rencontré ce problème ? (je précise que je suis certaine de ne pas faire de faute de frappe ! pas 6 fois de suite...)
    Mon site est hébergé chez Free.

    Merci d’avance pour votre aide.

    • Nathalie

      Une précision : en étant connecté comme administrateur, le mot de passe est accepté.

    • Bonjour,
      j’ai installé cette contrib pour mon site mais il semblerait qu’un personne ait eu accès à tous les articles protégés sans avoir à tapper un mot de passe. Elle tournait sous windws NT4 et IE 5.5. Je suis également chez Free. En dehors de cette personne, je n’ai pas eu d’autres cas mais cela me laisse penser qu’il y a une faille relativement grande (ou alors que je me sois trompé dans l’intégration du code ce qui est fort possible ^-^).

    Répondre à ce message

  • 2

    J’attends que la 1.8 soit stabilisé avant de faire la MAJ

    Merci de ne plus poster de question sur le passage 1.8 tant que je n’ai pas fait cette MAJ, je pense que celle-ci sera faite aux alentours du lundi 18 avril

    En attendant soit vous ne posez pas de question soit vous ne passez pas en 1.8

    Merci

    • Ca y est ? ON va avoir un nouveau script pour Spip 1.8.1 ?
      J’suis impatient :-)

    • bilboïd

      Toujours rien :’(

    Répondre à ce message

  • 1

    J’ai bien cru que j’y arriverai ce coup-ci...

    Tout à l’air de fonctionner, sauf qu’après la demande du mot de passe, j’ai une erreur 404 (file not found... ah, vous connaissez ?)

    En fait, le navigateur essaie d’ouvrir une adresse relative (qui est effectivement l’adresse de l’article n°25 voulu, mon site SPIP étant placé dans le sous-répertoire DYNA) :

    /dyna/enregistre_session2.php3 ?origine=/dyna/article.php3 ?id_article=25

    et me dit :

    The requested URL /dyna/article.php3 was not found on this server.

    Si je reviens en arrière et que je ré-esssaie d’accéder à l’article ou à la rubrique, j’y arrive (la session est bien ouverte)

    J’ai modifié enregistre_session2.php3 de la façon suivante :

    header(« location : $origine »)

    par : header("location : http://blabla.com$origine")

    et ca marche... mais la solution n’est pas très élégante. Y a-t-il un moyen de récupérer l’adresse complète du site dans $origine ? Ou bien de créer une variable stockant le nom du site ? Ou alors je me goure quelque part ?

    J’ai bien butiné à droite à gauche mais je n’y comprends rien, je crois être définitivement fâché avec les variables PHP :-(

    A moins que je ne me sois trompé dans le vidage de cache, cette erreur s’est produite aussi après avoir transféré tout le SPIP à la racine (fournisseur : Free).

    Autre indication, je fais tourner EVA, et j’ai fait les modifs directement sur les squelettes appelés par article.html.

    Voilà... si quelqu’un a une idée...
    Merci !

    • Hello !
      j’ai le même problème, mais pour moi cette petite bidouille ne résoud rien.
      Si quelqu’un peu m’aider,ce serait cool.
      Merci.

    Répondre à ce message

  • 5

    Bonsoir,
    J’ai protégé certaines rubriques de mon site sous SPIP 1.7 avec acces.

    Lorsque je clique sur une rubrique qui devrait etre protégée elle s’affiche sous cette information :

    Warning : session_start() : Cannot send session cookie - headers already sent by (output started at /data/members/free/laposte/fr/a/c/c/site/htdocs/CACHE/a/con-2-32.8094c9.NEW:5) in /data/members/free/laposte/fr/a/c/c/site/htdocs/CACHE/a/con-2-32.8094c9.NEW on line 10

    Warning : session_start() : Cannot send session cache limiter - headers already sent (output started at /data/members/free/laposte/fr/a/c/c/site/htdocs/CACHE/a/con-2-32.8094c9.NEW:5) in /data/members/free/laposte/fr/a/c/c/site/htdocs/CACHE/a/con-2-32.8094c9.NEW on line 10

    Warning : Cannot modify header information - headers already sent by (output started at /data/members/free/laposte/fr/a/c/c/site/htdocs/CACHE/a/con-2-32.8094c9.NEW:5) in /data/members/free/laposte/fr/a/c/c/site/htdocs/CACHE/a/con-2-32.8094c9.NEW on line 34

    Lorsque je clique sur une rubrique non protégée elle s’afiche sous cet autre message.

    Warning : session_start() : Cannot send session cookie - headers already sent by (output started at /data/members/free/laposte/fr/a/c/c/site/htdocs/CACHE/6/con-2-43.8b55f7.NEW:5) in /data/members/free/laposte/fr/a/c/c/site/htdocs/CACHE/6/con-2-43.8b55f7.NEW on line 8

    Warning : session_start() : Cannot send session cache limiter - headers already sent (output started at /data/members/free/laposte/fr/a/c/c/site/htdocs/CACHE/6/con-2-43.8b55f7.NEW:5) in /data/members/free/laposte/fr/a/c/c/site/htdocs/CACHE/6/con-2-43.8b55f7.NEW on line 8

    Que faire ?

    P.C

    • J’obtiens les mêmes méchants messages (sous SPIP 1.7). Le vidage de cache ou de cookie ne sert à rien, ça bloque. Incompatibilité avec la 1.7 ?

    • Comme j’avais également des problèmes avec le header, j’ai utilisé du javascript en ayant soin de modifier la valeur de $origine dans les scripts.

      J’ai remplacé dans controle_acces_article.html :
      $origine=$HTTP_SERVER_VARS[’SCRIPT_NAME’].« ? ».$HTTP_SERVER_VARS[’QUERY_STRING’] ;

      Par :
      $origine=« article.php3 ? ».$HTTP_SERVER_VARS[’QUERY_STRING’] ;

      Et :
      header(« location : FA2.php3 ?origine=$origine ») ;

      Par :

      echo « 

      <script language='Javascript'> &raquo;<small class="fine d-inline"> </small>;
      <p>echo &laquo; window.location.href=&#8217;FA2.php3<small class="fine d-inline"> </small>?origine= &raquo; . $origine .«<small class="fine d-inline"> </small>&#8217;<small class="fine d-inline"> </small>;\n<small class="fine d-inline"> </small>»<small class="fine d-inline"> </small>;</p>
      <p>echo &laquo; &lt; /script> &raquo;<small class="fine d-inline"> </small>;</p>
      <p><i>Attention à la syntaxe<small class="fine d-inline"> </small>!!</i></p>
      <p>Faire idem pour les rubriques (controle_acces_rubrique.html)</p>
      <p>Chez moi ça marche impécable<small class="fine d-inline"> </small>!!<br class='autobr' />
      Merci pour cette contrib</p>
    • Merci pour cette piste. Hélas cela ne fait envoler que le problème lié au header, pas le reste.

    • Salut bah j’ai le meme probleme, mais que les deux premieres erreurs, et la solution n’a pas resolue le bug !

      Si vous vous avez une solution ca m’arrangerait !

    • NicolasR

      Bonjour,
      Voici ce que j’obtiens après avoir appliqué ces corrections :
      Warning : session_start() [function.session-start] : Cannot send session cookie - headers already sent by (output started at /home/www/fr/savoirfaire/reseaux/observatoire-logement-social/CACHE/6/con-5-12.8b8c5e.NEW:5) in /home/www/fr/savoirfaire/reseaux/observatoire-logement-social/CACHE/6/con-5-12.8b8c5e.NEW on line 10

      Warning : session_start() [function.session-start] : Cannot send session cache limiter - headers already sent (output started at /home/www/fr/savoirfaire/reseaux/observatoire-logement-social/CACHE/6/con-5-12.8b8c5e.NEW:5) in /home/www/fr/savoirfaire/reseaux/observatoire-logement-social/CACHE/6/con-5-12.8b8c5e.NEW on line 10
      window.location.href=’FA2.php3 ?origine=article.php3 ?’ ; < /script>

      Avez-vous une auter idée ?
      Merci

    Répondre à ce message

  • Geronimo

    Bonjour.

    Très impatient d’installer cette contrib sur mon nouveau site, je souhaite savoir si la mise a été faite ou non.

    Pardon pour mon impatience.

    Géronimo.

    Répondre à ce message

  • Bisontin

    Comment peut on acceder aux articles ou rubriques par mot de passe à partir d’une base de données adhérents par exemple ou comment creer un espace adhérent dans le quel figurerait les rubriques ou article qu’on souhaite protéger. Merci

    Répondre à ce message

  • nicoooooo

    salut à tous j’ai problème étrange avec spip 1.7.2


    est bien à la première ligne de mon squelette article-19.html

    le groupe mot clé bien relié à l’article et aux rubriques
    lorsque que je recalcul mon squelette
    page blanche systématiquement il me semble que c du à la balise inclure

    modèle de mon entête ( j’ai enlevé exprès les tags


    INCLURE(controle_acces_article.php3)id_groupe=2id_article
     !DOCTYPE HTML PUBLIC « -//W3C//DTD HTML 4.01 Transitional//EN » "http://www.w3.org/TR/html4/loose.dtd"
    BOUCLE_article_principal(ARTICLES) id_article
    html lang=« #LANG »

    ...................

    Je comprend pas si une personne ayant déja eu le même pb pouvait se manifester ca serait super merci à toute la communauté

    Répondre à ce message

  • J’obtiens l’erreur :
    ’Erreur(s) dans le squelette o erreur d’exécution de la page, Kouymol error : kouymol error, unexpected Ptite_Bite in /home/.sites/47/site99/web/inc-public.php3(56) : eval()’d code on line 242’
    C’est grâve docteur ?

    Répondre à ce message

  • 9

    Eh bien voila, je propose aux lecteurs de cet article de passer à la version hierachisée des acces restreint
    qui est beaucoup plus sur que cette contrib et vous permet de hierarchisée les droits de vos visiteurs.

    • MERCI !

       ;D)

    • Dominique Jalu

      Comment peut-on accèder à cette nouvelle version qui semble très intéressante ?
      DJ

    • Isabelle

      bonjour,
      oui, comment acceder a cette nouvelle mouture ?
      merci

    • Pas mal et efficace effectivement, cela va me rendre bien service.

      Un bug ??? lorsque je reviens sur la page de gestion des invités, ce n’est pas leur login qui apparait, et qq difficultés pour supprimer un visiteur, je dois passer via phpmyadmin pour en etre sur. mauvaise manip de ma part ?
      Comment faire pour tester cela « à fond » en local ? si un invité demande son inscription ?

      Bravao encore

      amicalement

    • Impossible de telecharger la contrib, le lien est brisé !
      C’est normal ?

      manu

    • Pareil, le lien ne marche pas !!!

    • Alexis

      Le lien pointe vers l’espace privé... Impossible de télécharger la version hiérarchisée (pourtant très alléchante !!).
      Il semble que Eric du 23 Avril 2004 y soit pourtant arrivé.
      Alexis

    • Bonjour,
      comment accèder aux scripts (zone privée).
      Merci pour ton travail

      RS

    • Dans son empressement, je pense que l’auteur a copier-coller le lien depuis son backoffice. Le lien vers l’article est : http://www.spip-contrib.net/article...

      Par contre, attention, il semblerait que cette contrib ne soit pas applicable à la version 1.8 :-((

    Répondre à ce message

  • 1
    Nicolas Truchaud

    Bonjour,

    Après la mise à jour en SPIP 1.8, il semblerait que votre mode de protection ne marche plus. Avez-vous constaté la même chose ?

    Les symptômes sont :
    -  pour les articles : authentification ignorée
    -  pour les rubriques :
    * Erreur(s) dans le squelette
    o erreur d’exécution de la page,
    Parse error : parse error, unexpected T_STRING in /home/.sites/47/site99/web/inc-public.php3(56) : eval()’d code on line 242

    Je vous tiens au courant si je trouve la solution...
    Nicolas

    • Nicolas Truchaud

      Merci d’ignorer le précédent message, l’erreur provenait d’ailleurs.

      Par contre, j’obtiens maintenant un :

      Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/.sites/47/site99/web/inc-public.php3(20) : eval()'d code:5) in /home/.sites/47/site99/web/inc-public.php3(20) : eval()'d code on line 14
      
      Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/.sites/47/site99/web/inc-public.php3(20) : eval()'d code:5) in /home/.sites/47/site99/web/inc-public.php3(20) : eval()'d code on line 14
      
      Warning: Cannot modify header information - headers already sent by (output started at /home/.sites/47/site99/web/inc-public.php3(20) : eval()'d code:5) in /home/.sites/47/site99/web/inc-public.php3(20) : eval()'d code on line 39

      Et pourtant, j’ai suivi les instructions à la lettre :
      -  je n’ai laissé aucun espace avant d’insérer la ligne en haut de mes fichiers article.html et rubrique.html
      -  j’ai créé un dossier « sessions » à la racine de mon site (je suis hébergé chez Amen)

      Quelqu’un aurait-il une idée ??

      Nicolas

    Répondre à ce message

  • C’est nickel et ça marche super ...

    Seul bémol, le mot de passe à accessible via l’interface de rédaction en consultant les mots clef => lorsque l’inscription à la partie rédactionnelle est activé de façon automatique, un simple rédacteur peut donc y accéder facilement !! :-(

    La seul solution, désactiver l’inscription automatique de nouveaux rédacteurs . Dommage.

    Sinon, très bon moyen pour filtrer un minimum ;-)

    Répondre à ce message

  • Bonjour,
    merci et félicitation pour pour cette contrib qui m’aide beaucoup, ca marche super chez moi (hébergeur free).

    Dom75

    Répondre à ce message

  • 4

    Salut tout le monde !
    Bon j’ai tout lu ! et malgres ca !! probleme ! J’ai un bug et j’arrive pas a le résoudre ! voici le bug ke j’ai :

    Warning : session_start() : open(/var/www/free.fr/6/f/cisv.alsace/sessions/sess_af255702dd30816f46b46c04676d9208, O_RDWR) failed : No such file or directory (2) in /var/www/free.fr/6/f/cisv.alsace/enregistre_session2.php3 on line 4

    Warning : session_start() : Cannot send session cache limiter - headers already sent (output started at /var/www/free.fr/6/f/cisv.alsace/enregistre_session2.php3:4) in /var/www/free.fr/6/f/cisv.alsace/enregistre_session2.php3 on line 4

    Warning : Cannot modify header information - headers already sent by (output started at /var/www/free.fr/6/f/cisv.alsace/enregistre_session2.php3:4) in /var/www/free.fr/6/f/cisv.alsace/enregistre_session2.php3 on line 14

    Warning : Unknown() : open(/var/www/free.fr/6/f/cisv.alsace/sessions/sess_af255702dd30816f46b46c04676d9208, O_RDWR) failed : No such file or directory (2) in Unknown on line 0

    Warning : Unknown() : Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/www/free.fr/6/f/cisv.alsace/sessions) in Unknown on line 0

    enfin voila ! si l’auteur de cette article pouvais me donner un petit coucou de main ca serait super !!!

    Merci beaucoup d’avance !!!

    • même chose pour moi...
      je suis sous la derniere version de spip 1.7.2
      Quelqu’un peut-il confirmer que cela marche avec cette version ?

    • comme quoi on lit pas les faq en entier !!
      Il faut creer à la main un repertoire « sessions » sur le site.
      Voila.

    • J’ai beau avoir suivi les consignes à la lettre eh bien il n’y a aucune restriction aux accès, « tout le monde » peut voir le contenu de la rubrique...

    • J’ai eu le même problème suite à la mise à jour du serveur de mon hébergeur (tout fonctionnait correctement avant), et le problème est aussi présent sur un autre serveur. Je pense avoir testé tout ce qui est proposé sur le forum, mais j’ai toujours Warning : session_start() : Cannot send session cookie - headers already sent by (output started at /home/polo.net/site/spip/CACHE/2/con-2-27.33940e.NEW:5) in /home/polo.net/site/spip/CACHE/2/con-2-27.33940e.NEW on line 8

      Merci pour tout début de réponse, cette fonction est très pratique...

    Répondre à ce message

  • Tout d’abord, un grand merci au créateur de cette contib !
    Je l’ai installer sur mon site et ca fonctionne nickel.
    Seulement voilà, j’aurais aimé rediriger mes visiteurs sur une page spécifique à chacun, lors de leur identification. L’idée étant de leur permettre un accés à un espace personel sur mon site public lors de leur identification.
    Pour l’instant j’utilise la boucle du type (#login_public|rubrique-X.html) pour spécifier la page appelée lors du login. Mais je suis obligé de poser sur ma page html une boucle spécifique pour chaque client (x, y, z...).Ca fait lourd

    Comment faire pour orienter automatiquement mes client sur leur espace privé lors de l’identification avec une seul boucle login_publique ???

    J’ai trouvé le script sur phpscripts.fr (voir le lien), mais je ne sais pas comment l’appliquer à la contrib de Concil.

    Merci de votre aide.

    Répondre à ce message

  • Bonjour, avec ce système, serait-il possible de rendre les articles accessibles avec le mot de passe seulement quelques jours, 30 environ, et qu’ensuite, il deviennent accessibles à tous.

    Si oui, comment, car en plus, chaque squelette devrait comprendre quand il peut autoriser l’accès et quand il doit le limmiter.. :-(( pas simple.

    Dommage qu’on ne puisse pas être prévenu des réponses...

    Merci si qq’un-e me trouver la solution.

    Répondre à ce message

  • 1

    Salut à tous,
    je suis un petit nouveau sur Spip, et ma première phrase sera donc un grand merci pour le travail accompli et mis à notre disposition !
    Concernant la protection par mot de passe d’articles et rubriques, j’aimerai savoir vers quelle contrib il faut se tourner à l’heure actuelle. La lecture des messages de ce forum m’a fait comprendre que la contrib de départ avait connu des évolutions, mais je ne trouve aucun lien renvoyant vers un nouveau zip ou une autre contrib. Quelqu’un peut-il m’éclairer ?
    Merci d’avance !

    • il me semble que la réponse est dans le message de Courcy du 06 avril !

    Répondre à ce message

  • 7

    courcy, le 29 février 2004 :

    Bonjour à tous, en tant qu’auteur de cet article je tiens à vous dire que les choses ont progressé depuis ça et que tres bientot nous allons vous présentez une méthode de mis en acces reservé d’article ou de rubrique plus sur plus puissante et surtout beaucoup plus simple....

    Est-il possible de suivre - sur un forum publique par exemple - l’évolution de la recherche de solutions sur ce thème ?

    Et sinon, est-il possible d’avoir une estimation de la date à laquelle cette nouvelle méthode plus puissante et plus simple sera disponible ?

    Et encore Merci pour le travail déjà offert !

    • dans deux ou trois semaines environ

    • le Jamais Content

      2 ou 3 semaines... pffff... bon d’accord alors, mais pas plus, hein ! ;-)

      Sinon pour faire patienter, ça reposerait autour de quelles nouvelles boucles ?

    • je cherche toujours où suivre les discussion autour de ce sujet.
      j’ai cherché sur les listes de diffusions de spip, spip-dev, sur le forum de spip-contrib... sans succès :(

      par ailleurs les 3 semaines sont passées... ;)

      merci pour toute info !

    • Pour l’insant c’est avec des mots clés comme sur le bloog, il est en cours de traduire tout ca avec des extra, sur le meme principe.

    • c’est un peu comme les passagers d’un avion ... ;)

      ils aiment bien quand le pilote peut leur donner une estimée de l’heure de décollage ...

      -  ou encore mieux : pouvoir suivre l’évolution des débats autour de ce qui va permettre ce fameux décollage !

      -  et même, parfois, y’a des passagers qui ont des bonnes idées ;)

      Blague à part, y a-til une liste de diffusion ou un forum, sur lequel ont peut suivre les discussions sur ce sujet, histoire d’être moins passif dans cette histoire ?

      Et si c’est pas possible - pour x raison - pouvez-vous les donner ?

      amicalement,
      dieudo

    • Blague à part, y a-til une liste de diffusion ou un forum, sur lequel ont peut suivre les discussions sur ce sujet

      Je pense que c’est ici qu’on en parle le plus, grace a toi, n’hésite pas à signaler des idées !

      Mais en fait le plus gros du dossier a deja été plaidé, il faut juste remplacer les mots clés par des extras dans les fonctions existantes, ne manque que le temps pour le faire.

    • Salut,
      j’ai proposé ca : http://www.uzine.net/spip_contrib/ecrire/articles.php3?id_article=453, mais je n’ai pas beaucoup de retours sur le sujet.

      Ca ne correspond pas forcement à ton besoin (c’est surtout une protection des articles) mais ca peut etre adapté facilement.

      Pour l’instant, le plus gros probleme pour la protection des articles, c’est l’accès aux documents joints ...

      Si vous avez des idées, parcque la, je seche un peu (j’ai voulu faire un accès via un download.php, mais il faut aller faire des modifs un peu partout).

      Sinon, quelqu’un a des competences en SSL ? sur la config des .htaccess ?

    Répondre à ce message

  • Bonjour je n’ai jamais réaliser de site internet que ce soit sur SPIP ou non.
    Cependant j’ai une idée très précise de la structure que j’aimerai faire pour mon site. Je veut avoir une page public ou tout le monde peut avoir accès. Ensuite une page Membre accessible qu’aux membres avec un mot de pass(de la page public). Et pour finir un espace privé ou juste les auteurs et les administrateurs auront accès.

    Ma question est la suivante :
    Est ce que ta contribe peut me servire pour limiter l’accès de ma page privé aux membres ? cad plusieur groupes de membres n’ont accès que à un espace qui leur est reservé

    Merci d’avance de bien vouloir me repondre sur ce forum ou m’envoyer un mail/

    Répondre à ce message

  • l.cacheux

    Ne serait-il pas possible de présenter cela autrement. Je m’explique : au lieu de mettre un id_groupe fixe, on pourrait mettre un type_mot , non ??

    Sinon bravo pour cette contrib.

    l.cacheux

    Répondre à ce message

  • 3

    Bonjour à tous, en tant qu’auteur de cet article je tiens à vous dire que les choses ont progressé depuis ça et que tres bientot nous allons vous présentez une méthode de mis en acces reservé d’article ou de rubrique plus sur plus puissante et surtout beaucoup plus simple....

    C’est pourquoi je vous invite à ne pas trop vous « battre la dessus ». Car ce sera tres bientot completement caduque.

    @+

    • Ah ben en tant qu’utilisateur -ravi- de tout ce système infernal, je tiens à te remercier vivement pour ce boulot (toi et les autres qui ont bossé dessus bien sûr !)

      Je prends donc note que le site de mon école sera prêt à temps et super sécurisé pour une info en temps réel de la classe transplantée, début mai...

      Cool !

      Plaisanterie mise à part, merci encore

    • Bonjour,

      Merci beaucoup pour cette future version.

      Bravo à toute l’équipe.

    • Je confirme que cette fonction est très attendue !

      Merci d’avance ;)

    Répondre à ce message

  • Euh... pour ceux qui auraient eu la joie de découvrir cela à l’ouverture d’un article ou d’une rubrique protégé :

    Fatal error : open(O_RDWR) failed for session file. The error is No such file or directory (2).

    et qui n’auraient pas lu l’aide en ligne proposée dans ce cas (si si, j’en connais un, sur free...)

    Il vous faut pour que tout fonctionne que la gestion des sessions soit activée sur votre serveur... et donc placer vous même si ça n’a pas été fait tout seul un répertoire « sessions » à la racine de votre site.

    Moi je dis ça... je ne dis rien :-)

    Répondre à ce message

  • Bonjour,

    Avez-vous déjà eu ce message sous IE ?

    « mdp est indefini »

    J’ai dû l’enlever mais je ne comprends pas pourquoi ça fait ça ??

    @+

    Txia
    @Lyfoung

    Répondre à ce message

  • 1

    Bonjour !
    Quelle ne fut pas ma joie de découvrir cette contrib !!!
    ....mais j’ai exactement le même problème que « Pierre-Edouard, le 9 octobre 2003 » (un peu plus bas dans cette page).....et je ne pige vraiment pas pourquoi (pourtant, moi, mon fichier s’appelle bien « rubrique.html » et effectivement, ce fichier contient une mise en page perso (un squelette quoi). Est-ce cela qui produit le message d’erreur ??

    Merci de me faire parvenir vos lumières jusqu à moi (je ne suis pas bien loin)

    Et merci encore pour cette contrib !!

    Greg

    • Idem.
      Je pense que cela vient d’Online (mon hébergeur) qui doit avoir une ancienne version de php...

    Répondre à ce message

  • casimopon

    formidable contrib,
    merci.

    cependant, dans mes squelettes autres,sommaire, oo, ..

    je mets le critère :

    BOUCLE_aa(ARTICLES)id_groupe !=1
    j’ai rien du tout (aucun article)
    en revanche si je mets id_groupe=1

    il m’affiche bien les articles protégés et uniquement eux (c’est le bon id_groupe)

    à l’envers il marche bien !

    apparament il comprends pas le !=
    j’en suis à mon quatrième tube de calmant

    dans la meme boucle j’ai un
    id_rubrique !=2 qui marche

     :(

    merci

    Répondre à ce message

  • Bonjour,

    Comme débutant, j’ai suivi l’installation rapide et tout fonctionne correctement sauf l’apparition du message

    Notice : Undefined index : erreur in c :\program files\easyphp1-7\www\cfpcharleroi\fa2.php3 on line 5

    En adaptant cette ligne en :

    if(isset($erreur)) $erreur=$HTTP_GET_VARS[’erreur’] ;

    je n’ai plus de problème.

    Serait-ce spécifique aux paramètres d’environnement (EasyPHP) ?

    Répondre à ce message

  • Bonjour à tous. Nouveau mais très content de cet outil, je me sui aperçu que beaucoup de liens ( de type http://www.uzine.net/spip_contrib/article.php3?id_article=201 ) de ce site pointe vers uzine.net alors qu’il suffirait de ne changer que le terme uzine contre « spip » et l’on arrive directement vers le bon lien (les articles n’ayant pas bougé)

    Un admin pourrait-il mettre à jour tous ces liens ???

    merci pour tout

    redb

    Répondre à ce message

  • Philippe Hensmans

    Ca fonctionne nickel, sauf que j’ai chaque fois, tout en haut de la page afffichée, un «  ?> » (sans les guillemets) qui traîne.
    J’ai beau tout retourner, je ne trouve pas.
    Une idée ?

    Répondre à ce message

  • 1

    Dans les pack zippés, il y a un chemin d’accés (path) or j’ai bien lu dans cette contrib que les fichiers doivent être dézippés à la racine du site (www). En dézippant sans le chemin, effectivement, ça fonctionne mieux... avec les liens direct (/rubrique.php3 ?id_article=20).

    Ceci dit pour aider ceux qui ont eu ce genre de problème.

    A part ça, j’utilise toujours les squelettes de base qui affichent royalement mes fichiers cachés.
    Je crois que la solution est plus haut dans la contrib. J’y retourne immédiatement...

    Be aware !

    • Ceci dit en local avec easyphp, suis pas encore au site distant.

    Répondre à ce message

  • 3

    Bonjour !

    J’ai bien tout fait comme c’est indiqué. Mais invariablement, j’ai droit à cette phrase, que le mot de passe soit bon ou pas :

    votre mot de passe est erroné votre administrateur l’a peut-etre change

    Je précise que je teste ça en local, sur mon serveur Apache sous Windows 2000 et SPIP 1.5.2. Que me suggérez-vous ?

    • Désolé mais cette contrib est prévu pour la 1.6 car elle utilise les groupes de mot clé.

    • A tout hasard, j’ai mis ça en ligne sur le serveur du site. Et là, miracle, ça marche !

      Mais j’aimerais bien qu’on m’explique pourquoi ça ne marche pas sur mon serveur perso. Y a-t-il un paramètre à appliquer ? Une mise à jour à faire ?

    • Ca semble marcher aussi sur la 1.5.2, version dans laquelle on a les groupes de mots-clé.

    Répondre à ce message

  • Pour trouver le no du groupe essayer un squellette comme celui-ci

    <BOUCLE_groupes(GROUPES_MOTS){par titre}>
    <h1>#TITRE no #ID_GROUPE</h1>
    <BOUCLE_mots(MOTS){id_groupe}{par titre}{" - "}>
    #TITRE
    </BOUCLE_mots>
    </BOUCLE_groupes>

    Bon courage

    Répondre à ce message

  • 2

    Cette méthode marche super pour des articles auxquels on accède de manière classique mais comment faire lorsque l’on a créé des squelettes particuliers aux rubriques que l’on veut protéger. En effet, ils sont accessible si l’on inscrit leur adresse dans la barre de navigation.

    • Je me répond moi-même :
      En fait il faut semble-t-il modifier $origine dans les différents fichiers du pack en lui affectant le nom du squelette (chez moi c’est rubrique-50.php3 par exemple) et procéder de même pour les autres squelettes.

      Par contre comment faire pour protéger du coup les forums reliés à ma rubrique comme on ne peut pas il me semble leur affecter des mots clés. Est-il possible de tester juste si la session est toujours en cours et sinon orienter vers le FA50 ?

    • J’ai une méthode dérivée de celle ci qui utilise le formulaire d’identification spip.

      Elle devrait te permettre de protéger n’importe quoi dans ton site.

      @ +

      BoOz

    Répondre à ce message

  • 1

    Lorsqu’un rédacteur accède à l’dition du site, dans mots clés, il ne peut rien créer mais il a peut lire l’intégralité des codes (mots).
    J’ai bien paramétré le groupe sous spip 1.6

    • il s’agit du fonctionnement normal de spip, on ne peut pas protéger des articles « contre » les rédacteurs.

    Répondre à ce message

  • 1

    Il me semble que votre bidule pour protéger l’accès de rubriques ou d’articles est qd même vachement plus complexe que Xprotector (cf autre contrib « je ne sais plus où ? »). Mais peut être n’ai je pas vu certaines faiblesse liées à Xprotector ?

    • Mon bidule cher ami ne s’appuie pas sur la liste des mots de passe integré dans la base mais sur un mot de passe choisi comme mot-clé, les buts poursuivis ne sont pas ceux de X-protector. La simplicité d’installation est tres grande les explications sur son fonctionnement sont plus complexes il en va de meme pour X-protector... Peut-etre avez-vous confondu ces 2 problemes, peut etre n’avez-vous pas vraiment lu dans le détail, peut etre avez-vous survolé, qui sait ?......

    Répondre à ce message

  • 2

    Super contrib, très facile d’utilisation !

    Au fait, je ne vois pas la nécessité de supprimer le couple mot.php3 / mot.html.
    Car cela ne permet pas de visualiser les mots-clés.
    Quand je fais : http://mon_site.org/mot.php3?id_mot=n
    Je ne vois qu’un bouton « modifier », avec l’id du mot-clé mais pas sa description.
    Je ne probablement pas tout compris...
    Merci d’avance pour votre réponse.
    A+ Laurent
    P.S. Je suis en SPIP 1.6

    • Et bien si en tapant dans ton brouteur mot.php3 ?id_article=x ou x varie de 1 au nombre de mots clés tu réalises rapidement que tu peux obtenir la liste de tous les mots clés utilisés pour le site : ceux pour les mots de passe et ceux pour d’autres utilisations un courageux h acker n’a plus qu’a tous les essayé.......

    • Il faut alors garder le couple mots.php3/.html et ajouter dans la boucle MOTS du squelette mots.html, le critère {id_groupe!=2}
      (si 2 est le numéro du groupe « acces multiple »).

      C’est expliqué dans l’article (limitations).

    Répondre à ce message

  • Le fichier FA2.php3 contient une faute, il faut remplacer « site publique » par « site public ».

    Répondre à ce message

  • 2

    Ouais pas mal ! Mais ya un blem : les docs joints aux articles et/ou rubriques protégées sont toujours accessibles non ? Il suffit d’aller à l’adresse www.monsite.fr/spip/IMG/ ...

    • Bonjour,

      si tu mets un fichier .htaccess qui contient l’instruction deny from all dans ton rerpertoire IMG, il ne sera plus accessible a personne non ? C’est ce qui me parait le plus simple.

    • Bonjour ;
      en fait j’ai copié le fichier htaccess dans /IMG effectivement le repertoire IMG est devenu inaccessible a personnes mais j’ai un probleme c’est que les images liées aux articles proteges ne s’affichent pas et aussi les documents joints ne sont pas telechargable que puis je faire ?? et merci

    Répondre à ce message

  • 3
    Pierre-Edouard

    Michael, mon amour tu es le plus fort !

    Bravo !

    • Pierre-Edouard

      Sauf que !

      J’ai tout bien fait comme tu l’as expliqué, et lorsque je veux visiter la rubrique supposée être protégé, j’obtiens ce merveilleux message :

      Fatal error: Call to unsupported or undefined function session_start() in your script on line 4

      Une précision tout de même : les seules différences notables avec ton explication sont que mon fichier « rubrique.html » s’appelle en fait « testrubrique.html » (fainéant comme je suis, la page de test est restée là...), et que mon mot de passe n’est pas « sauciflon sec ».

      J’espère que quelqu’un saura m’aider dans cette mésaventure.

    • Si session_start est pas reconnu pas reconnu c’est que ton fichier n’est pas un squelette ou que ta version de php a fait les bonheurs de mon grand pere

    • Pierre-Edouard

      Que veux-tu dire par « mon fichier n’est pas un squelette » ?

      Mon site petessier.org tourne sous SPIP 1.5.

    Répondre à ce message

  • 1
    Jean-Michel

    En fait j’aimerais pouvoir adapter cette astuce mais côté auteur. Comment un auteur ne pourrait-il écrire que dans une seule rubrique du site, par exemple ?

    Jean-Michel

    • Il suffit de restreindre l’access à une ou plusieurs rubriques dans son profil ; il devient alors limité.

      Le problème que j’ai identifié, c’est qu’un simple auteur peut avoir accès par l’interface de saisie à la lecture des articles « protéges »...

    Répondre à ce message

  • Génial !
    Mais il m’a fallut aller dans la table groupe_mots pour lire l’id_groupe (qui était 2)

    Répondre à ce message

  • 5
    JJ GOINEAU

    Et si je veux protéger tout le site avec un accès réservé ? En effet, je voudrais faire un site réservé qu’à mes élèves avec accès par login et par mot de passe.
    Comment dois-je m’y prendre ?

    • Salut,

      J’ai adapté la méthode de Courcy et DoriaN pour faire ce que tu demandes et plus.

      voir kit accès restreint et pilotage par mot clé sur bloOg (nouvelle version). (et oui, j’ai changé de méthode, plus de EVA, EVA est désormais dépassé au profit de la méthode Courcy dans les recommandation du Spip3C).

      C’est encore brouillon dans les explications car je viens de le coder mais ca marche au poil. Les connaisseurs et même les autres réussiront sans doute à se dépatouiller quand même.

      Je prépare une contrib plus générale sur la gestion d’un espace membre avec spip ou j’expliquerai ca avec moultes détails en séparant la méthode de mes graphismes.

      D’ici la j’espère que mon lien suffira pour démarrer.

      @ plus

      BoOz

    • Et bien tu mets en acces protege toutes les rubriques que tu crées à la racine. Et tu configure index.php3 pour qu’il pointe sur une rubrique de ton choix le tour est joué

    • attention : avec cette méthode le tour est joué sans l’identification (login/mot de passe) mais avec un mot de passe seulement.

    • JJ GOINEAU

      Quelqu’un peut-il me donner quelques précisions sur cette instruction :

      Créer un groupe de mot clé que vous appelerez « acces multiple »,vous cocherez les bonnes cases pour que ce groupe ne soit accessible qu’aux administrateurs et puissent être associés aux articles et aux rubriques.

      Je fais ça comment ? Dans la base de données ?

    • edition du site -> mots clé -> creer un groupe de mot clé

      Bon courage (utilise plutot le kit acces easy)

    Répondre à ce message

  • Bonjour,

    je m’interroge...quelle différence entre les 2 packs a telecharger ? Je réalise mon site en local sous EasyPHP avant de le mettre en ligne....devrais je changer de pack à la mise en ligne ?

    Cordialement

    Répondre à ce message

  • 1
    Delphiste47

    Bonjour
    Cette contrib est géniale, enfin pour moi puisque c’est ce que je m’évertuais à essayer de faire ... merci
    Elle fonctionne tres bien avec IE mais pas avec Mozilla ??? normal ou pas ? sinon quelle modif faut-il que je fasse ?

    • Tres surpenant car moi je travaille exclusivement sur mozilla et c’est avec mozilla que je l’ai dévellopé...Puvez-vous me donner votre version de Mozilla.

    Répondre à ce message

  • 1

    Bonjour,
    Tout d’abord, merci pour cette contribution.

    Globalement cela fonctionne chez moi, mais à chaque fois j’ai un message qui s’affiche me disant que ’mdp’ est indéfini. Si je valide par OK, l’authentification fonctionne correctement.
    Une suggestion ?

    Par ailleurs, comment faire pour personnaliser le formulaire de saisie du mot de passe ?

    Merci pour votre aide.

    • oui mdp est indéfini est un bug que j’ai oublié de lever, et pour personnaliser le formulaire
      d’authentification ouvrer le fichier FA2.php3 puis la faites ce qu’il vous plait.....

    Répondre à ce message

  • 2

    Je souhaite insérer un mot de passe pour accéder à la rubrique album, car je n’ai pas le droit de laisser accéder tout visiteur... J’ai suivi votre démarche mais rien ne se passe ; d’ailleurs je ne sais pas comment un FA (formulaire d’accès) pourrait apparaître et où il devrait apparaitre. J’ai vérifié mon groupe de mots clés, mis 2 mots clés, inséré le numéro du mot clé dasn article et rubrique.html, ...téléchargé le tout sur mon site..RIEN ne se passe, est-ce dû au squelette biospip ?

    • Oui bien sur il faut que tu rentres dans les squelette d’article et rubrique de bio spip pour faire les modifs en debut de page sinon ca ne peut pas marcher, comme tu dis rien ne se passe. Relis bien l’article.... A la lecture de ta question j’ai le sentiment que tu n’as pas tout saisi, il ne serait pas irraisonnable de demander au gars de biospip si il ne veulent pas à leur tour implémenter un systeme d’acces restreint, ma methode n’étant qu’une piste parmis d’autre

      @+

    • Faut-il rentrer dans les squelettes de article.html et rubrique.htrml ou directement dans album.html par exemple, puisque c’est la rubrique en question ? et tous les articles présents dans cette rubrique ?
      Merci

    Répondre à ce message

  • 4

    je crois que la redirection header ne marche pas avec tous les navigateurs (ca m’a fait le coup avec internet explorer 5 je crois)

    Du coup j’utilise le systeme des tests eva (décidement très malins) dans article.html pour voir si l’article à le mot clé acces_restreint : si oui j’appelle le squelette avec identification sinon j’appelle le squelette standard. Je protege aussi le squelette standard avec une boucle qui vérifie qu’on essaye pas d’afficher un article protegé en forcant le squelette standard avec une id d’article protégé.

    Je prépare une explication sur mon squelette de demo si les détails interressent certains.

    @ +

    • squelette de demo qui est là, désolé

      BloOg

    • Oui mais est-ce que ce systeme te permet de mettre toute une rubrique en acces protégé et d’etre sur que l’utilisateur ne vas pas essayer d’acceder à l’un de ces articles en tapant directement l’url de cette article dans son navigateur ? Qu’est-ce qui te garantit que la sous sous sous rubrique de la rubrique que tu as protégé est aussi bien protégée ?

    • Le systeme des header marche sur IE5 mais il fallait que je sois plus rigoureux dans l’écriture de mes scripts avant l’envoi éventuels de header c’est ce que fait acces_easy.zip

      @+

    • Bonjour,

      Mon systeme de redirection par mots clé à la EVA permet d’etre sur que l’on ne pirate pas un article en forcant l’url. Il est fondé une une duplication des squelettes. Il y a un squelette qui affiche les articles protégés en vérifiant que l’utilisateur est connecté par son login/mot de passe de membre du site et un squelette jumeau qui affiche les squelettes non protégés. Ce deuxieme squelette vérifie à l’aide d’une simple boucle spip que l’article qu’on tente d’afficher n’est pas protégé par un mot clé.

      Par ailleurs, je vais réutiliser ta méthode astucieuse de hiérarchie pour assurer l’héritage des droits d’une rubrique sur ses enfants qui n’existe pas encore dans le code que je propose.

      Ma méthode présente l’avantage (et l’inconvéniant) d’etre conditionné par un accès type « membre » car on test si l’utilisateur est un membre du site spip. Donc chaque utilisateur rentre son propre login/mot de passe. Avec ma méthode, il n’est pas prévu d’utiliser un mot de passe différent selon ce que l’on consulte.

      En poussant ma méthode, la différenciation des contenus pourrait se faire (mais je n’aime pas ca) par rapport au statut du membre (admin, redac, visiteur).

      Enfin ma méthode est (quasi)entièrement en spip pur avec des boucles.

      Nos deux méthodes sont donc d’un usage assez différent, la tienne permet d’acceder au contenu selon différents mots de passe que les initiés connaissent, la mienne permet de limiter l’acces à des membres du site (elle est incluse dans une logique de site communautaire avec contenus qui nécéssitent de savoir qui est connecté, pour dire bonjour machin ou des choses importantes comme ca par exemple ;-) ).

      @ +

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom