Lien de déconnexion des pages protégées
Pourquoi un lien
Les pages protégées de TOWeb sont accessibles durant une heure après l'entrée du mot de passe, même si vous fermez le navigateur après 5 minutes et que vous l'ouvrez 15 minutes plus tard.
Dans la majorité des cas, ce n'est pas un soucis, mais lorsque le PC est utilisé par plusieurs personnes au sein d'un club où chacun a sa page perso, il est bien de pouvoir se déconnecter avant de partir.
Une solution
Je vous propose d'insérer le lien dans ces pages ou pour le site complet, ce qui permet de ne pas devoir retourner sur la page obligatoirement.
Un exemple sur ce site de test pour mieux comprendre ce qui suit (rassurez-vous, il n'y a rien de compliqué, c'est simplement que j'y fais référence à plusieurs endroits). La page protégée est Société, l'identifiant est frangin et le mdp frangin62 (je me suis encore creusé les méninges). Les 2 pages suivantes sont également protégées mais d'une façon différente, c'est en fait la page Société qui les débloque, puis les deux suivantes protégées par normalement.
Comment faire
Voyons d'abord la partie commune avant de voir les deux possibilités.
Pour prévenir l'utilisateur que cela s'est bien passé, vous créez une rubrique de retour. Sur mon site de test, je l'ai nommé " deconnect.html " avec le message "Vous êtes désormais déconnecté. Merci de votre visite." (vous mettez ce que vous voulez évidemment).
Vous téléchargez ce petit fichier , après dézippage, vous aurez un fichier logout.php dans lequel vous devrez faire une éventuelle modification pour indiquer le lien de la page.
Si vous avez donné le même nom à votre page de retour, vous n'avez pas besoin d'ouvrir le fichier.
Si vous avez donné un autre nom , après le téléchargement, avec un éditeur de texte (Notepad++) vous ouvrez le fichier logout.php. Vous remplacez à la troisième ligne deconnect.html par le nom de votre page.
Vous créez ensuite un champ html (moi je l'ai nommé CONNEXION ).
Dans Script du champ, vous remplacez ce qu'il y a par ce script puis vous remplacez dans la première ligne societe.php par le nom de la page protégée où toutes les personnes sont habilitées.
<span id="ident"><a class="btn" href='societe.php'>Connexion</a></span> <!-- avec bouton Connexion -->
<a id="boutdecon" class="btn" href='_fields/logout.php'>Déconnexion</a>
<script>
function readCookie(name){
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function getCookie(cname) {
let name = cname + "=";
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for(let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
var x = readCookie('verify');
if (!x){
document.getElementById('boutdecon').style.display = "none";
}else{
var user = getCookie('identifiant');
// alert(user);
document.getElementById('ident').innerHTML= user;
}
</script>
Dans Fichiers additionnels, vous ajoutez le fichier logout.php
Le nom de l'utilisateur et le bouton Deconnexion apparaissent lorsqu'une personne s'est connectée.
Insertion des liens dans les rubriques
La première façon est de mettre le %CONNEXION% dans un paragraphe en haut de la page protégée ou dans un panneau.
La seconde, comme je l'ai déjà expliqué dans d'autres tutos ainsi que Jacmgt sur le forum, est d'utiliser si c'est possible le Pied de page (petit) après l'avoir remonté vers le haut de la page dans l'Editeur CSS de Thème. Ce qui s'y trouve, Copyright ou CGU peut être déplacé dans une section du Pied de page large. Ce que j'ai fait sur le site de test.
J'ai placé le %CONNEXION% à droite. En faisant de cette façon, le lien de déconnexion est visible sur toutes les rubriques.
Ajout du script permettant d'afficher le nom de l'utilisateur
Vous créez un second champ html (moi je l'ai nommé AJOUTID) dans lequel vous copier/coller ceci
<script>
ajoutid = document.getElementsByName('access_login');
ajoutid[0].setAttribute('id','access_login');
ajoutonclick = document.getElementsByName('Submit');
ajoutonclick[0].setAttribute('onclick','recup()');
function recup(){
identif = document.getElementById('access_login').value;
// alert(identif);
d = new Date();
d.setTime(d.getTime() + (3600*1000));
let expires = "expires=" + d.toUTCString();
document.cookie = "identifiant="+identif+";"+expires+";path=/";
}
</script>
Vous placez ce champ %AJOUTID% dans une section du bas de page de façon à l'avoir sur toutes les pages.