Accés restreints à certains articles (autre approche)

All contributions published for previous SPIP versions

Comment restreindre une partie du site a des personnes identifiées

Bonjour.

Puisque tout le monde semble proposer sa soluce concernant l’acces restreint a un certain nombre d’articles, voici ma petite contribution.

(ma petite contribution fonctionne depuis quelques mois sur le site d’une administration)

Commencons par ordre :

* deux fichiers installés à la racine du site :

-  identification.html
-  validate.php3

Un bout de code a rajouter dans les fichiers concernés :

-  haut.php3

Le fichier identification.html contient le formulaire suivant :

<form name="login" method="post" action="validate.php3">
<div align="center"><span class="url">Identifiant </span> 
<input type="text" name="user_name">
<br>
<span class="url"> Passwords </span>
<input type="password" name="password">
<br>
<input type="submit" value="Valider">
</div>
</form>

Comme vous le remarquez le formulaire renvoie a un fichier nommé validate.php3, dont voici le contenu :

<?
@mysql_connect("localhost","root","");
@mysql_select_db("test") or die("impossible à se connecter");
$requete="select * from connection_users where user_name='$user_name' and chiffre='$password'";
$result=mysql_query($requete);


if ($ligne = mysql_fetch_assoc($result)) {

$nom=$ligne["user_name"];
$chiffre=$ligne["chiffre"];



//renvoie les valeurs noms et identifiant a une base de donnee
$requetInsert="insert into log_users (compteur, user_name,chiffre, date_log) VALUES ('','".AddSlashes($nom)."','".$chiffre."',NOW())";


$resultInsert=mysql_query($requetInsert);
SetCookie("nom",$nom);
SetCookie("chiffre",$chiffre);

?>
<html>
<head>
</head>
<body>
<script>document.location.href='nom_du_fichier_privé.php3'</script>
<?

} else {

?>

<script>document.location.href="identification.html"</script>
<?
};
mysql_free_result($result);
mysql_close();
?>

</body>
</html>

Pour que cela fonctionne il aura fallu creer auparavant deux bases de donnees. (voir la doc mysql pour créer deux bases de données)

-  une base de donnee contenant le login de la personne (ici son nom) ainsi qu’un password ( ici une série de chiffre)
-  la seconde permettant d’avoir une base de donnée du type log_users en temps réel et ainsi vérifier qui accéde à la partie réservée et vérifier ainsi les accés.

Donc cela donne les opérations suivantes :

-  la personne inscrit son login et password, vérification des deux identifiants sur la base de donnée, si identifiants valides l’inscription dans la seconde base de donnée s’effectue qui s’incremente automatiquement.
Aprés validation, la personne est envoyée vers le fichier désiré (nom_du_fichier_privé.php3). Si la personne est inconnue de la première base de donnée elle revient à la page identification.html.

Le bout de code en php3 (haut.php3) lui se compose des lignes suivantes :

<?
// ici premier ligne au dessus
if ($nom==""){

?>

<script>document.location.href="identification.html"</script>
<?
} ;
// ici derniere ligne en dessous
?>

Ces lignes (haut.php3) doivent êtres mises dans tous les fichiers php3 (rubrique.php3, article.php3 par exemple ) dont vous voulez restreindre l’accés.
De plus, même si une personne envoie l’url d’une page protégée à un ami par courrier électronique, le destinataire n’étant pas reconnu il ne pourra pas accéder à la page proposée.

Si vous voyez des trucs à ajouter, des bidules à enlever ou si cela vous pose des questions n’hésitez pas à me contacter.

Discussion

No discussion

Add a comment

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 / PostgreSQL
  • 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 apparait.

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.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom