Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Newbie] Acces site sur authentification ?

3 réponses
Avatar
paul
Bonjour,

j'aimerais savoir s'il existe un script php qui ne permettrait l'accès à
site ou à un répertoire qu'à ceux qui rentreraient leurs login/password
contenus dans une base de données MySql (et de garder leur
identification dans un cookie).

En effet, j'aimerais éviter le .htaccess parce qu'un éditeur de contenu
(style SPIP ou Lodel) existera. Les personnes pourront y modifier leur
login/password. C'est donc le même login/password de cet éditeur que
j'aimerais utiliser à l'entrée.

3 réponses

Avatar
Sitch
Bonjour,

paul wrote:
Bonjour,

j'aimerais savoir s'il existe un script php qui ne permettrait l'accès à
site ou à un répertoire qu'à ceux qui rentreraient leurs login/password
contenus dans une base de données MySql (et de garder leur
identification dans un cookie).

En effet, j'aimerais éviter le .htaccess parce qu'un éditeur de contenu
(style SPIP ou Lodel) existera. Les personnes pourront y modifier leur
login/password. C'est donc le même login/password de cet éditeur que
j'aimerais utiliser à l'entrée.


Il en existe sûrement plein ... c'est un peu la base d'une appli web.

Le principe en est relativement simple :
- présenter le formulaire de login
- récupérer les infos du formulaire envoyées et les utiliser pour
tester leur validité en les comparant aux données stockées en base
- si c'est bon, stocker des informations dans la session utilisateur
afin de marquer le fait que l'utilisateur est identifié/authentifié
- dans chaque page "protégée", vérifier la présence des marqueurs
dans la session avant d'afficher la page ou de procéder aux
traitements

(Si tu en veux plus, n'hésite pas à demander)

Tu peux récupérer des applis open source et regarder leur source pour
voir comment ça a été implémenté dasn ces applis là (DotClear,
Claroline, Ganesha, ...). Je n'ai jamais ouvert Lodel, mais pour SPIP
pas de chance, il a été fait pour des versions anciennes de PHP, et
donc il gère les sessions dans des fichiers à lui, et le principe
exposé plus haut ne fonctionne pas et ne permet pas de partager les
sessions PHP4.

Avatar
paul
In article ,
"Sitch" wrote:

Tu peux récupérer des applis open source et regarder leur source pour
voir comment ça a été implémenté dasn ces applis là (DotClear,
Claroline, Ganesha, ...).


Puisque la partie édition sera gérée par Lodel et que seuls les
utilisateurs référencés par Lodel auront accès au site : j'ai mis comme
page d'index (avec un .htaccess) la page d'identification de Lodel :
login.php

Mais une fois loggé et la session ouverte, je reste sur cette page (je
ne peux pas en sortir).

Si j'ai bien compris le code (?...) c'est parce qu'il y a un problème
avec l'historique et la page précdente qui nous aurait obligé à nous
logger. Car dans l'installation "standard" de Lodel c'est qu'on on veut
administrer, rédiger un article, etc... que l'on doit s'identifier. Moi
je mets l'identification à l'entrée du site. Il n'y a donc pas
d'url_retour qui appartienne au site. Et je reste sur place.


Je pense qu'il faudrait modifier le code php, pour qu'une fois loggé on
aille systématiquement à "index.php" à la racine du site.
J'ai bien essayé de bidouiller, mais je n'ai pas vraiment les
compétences pour toucher au php...
:-((

Si une bonne âme passait par là et pouvait débloquer la situation d'une
manière ou d'une autre... voilà une partie du code php :

_______________________________________________

// change l'expiration de la session et l'url courante
//

// nettoie l'url

$url=preg_replace("/[?&]recalculw+=oui/","",$_SERVER['REQUEST_URI']);
if ($back) $url=preg_replace("/[?&]back=d+/","",$url);
if (!$norecordurl) $update=", currenturl='$url'"; // si norecordurl
ne change rien

$expire=$timeout+$time;
mysql_query("UPDATE $GLOBALS[tp]session SET expire='$expire'$update
WHERE name='$name'") or die (mysql_error());

//
// gestion de l'url de retour
//
if ($back) {
// on detruit l'entree dans la pile
$back=intval($back);
mysql_query ("DELETE FROM $GLOBALS[tp]pileurl WHERE id='$back' AND
idsession='$idsession'") or die (mysql_error());
}
$urlmd5=md5($url);

// enregistre l'url de retour ? partir de l'info dans la session
if ($row[currenturl] && $row[currenturl]!=$url && !$norecordurl &&
!$back) {
mysql_query ("INSERT INTO $GLOBALS[tp]pileurl
(idsession,url,urlretour) VALUES
('$idsession','$urlmd5','$row[currenturl]')") or die (mysql_error());

$context[url_retour]=mkurl($row[currenturl],"back=".mysql_insert_id());
} else {
// cherche l'url de retour dans la base de donnee
$result=mysql_query ("SELECT urlretour,id FROM $GLOBALS[tp]pileurl
WHERE idsession='$idsession' AND url='$urlmd5' ORDER BY id DESC LIMIT
0,1") or die (mysql_error());
if (mysql_num_rows($result)) {
list($urlretour,$id)=mysql_fetch_row($result);
$context[url_retour]=mkurl($urlretour,"back=$id");
} else {
$context[url_retour]="";
}
}
# echo "retour:$context[url_retour]";
//
// fin de gestion de l'url de retour

_______________________________________________

Avatar
paul
Oops... je me suis arrangé en demandant à ce qu'on soit loggé pour
accéder à chaque page et hop plus de problème :
si on n'est pas loggé on est redirigé vers la page de login et après à
l'accueil du site.


Merci
Paul