Skip to content
Extraits de code Groupes Projets
Valider e79808f7 rédigé par Fil's avatar Fil
Parcourir les fichiers

auth-cookie, suite, avec creation $visiteur et $visiteur_authentifie dans l'espace public

parent 71e17191
Branches
Étiquettes
Aucune requête de fusion associée trouvée
......@@ -88,16 +88,17 @@ function auth() {
// cookie - experimental
$SUPPRIME_LA_SECURITE_POUR_JOUER_AUX_COOKIES = false; // mettre true pour jouer
if ($SUPPRIME_LA_SECURITE_POUR_JOUER_AUX_COOKIES)
if ($cookie = $HTTP_COOKIE_VARS[spip_session]) {
if ($cookie_session = $HTTP_COOKIE_VARS['spip_session']) {
include_local ("inc_session.php3");
if ($visiteur = verifie_cookie_session ($cookie)) {
if ($visiteur = verifie_cookie_session ($cookie_session)) {
if ($visiteur->statut == '0minirezo' OR $visiteur->statut == '1comite') {
$session_login = $visiteur->login;
}
}
$cookie_session = ''; // parano ?
}
if (! $session_login AND ($HTTP_COOKIE_VARS[cookie_login] == 'experimental')) {
@header ("Location: login.php3");
@header ("Location: ./login.php3");
exit;
}
......@@ -106,7 +107,7 @@ function auth() {
$auth_pass_ok = true;
$auth_can_disconnect = true;
if ($GLOBALS['logout'] == $auth_login) {
@header("Location: ../spip_session.php3?cookie=-1&redirect=ecrire/login.php3");
@header("Location: ../spip_cookie.php3?cookie_session=-1&redirect=./ecrire/login.php3");
}
} else
// cookie - fin experimental
......
......@@ -14,30 +14,27 @@
// cree le cookie correspondant a l'auteur
// attention aux trous de securite ;)
function cree_cookie_session ($id_auteur) {
if ($id_auteur > 0) {
$query = "SELECT * FROM spip_auteurs WHERE id_auteur=$id_auteur";
include_ecrire ("inc_connect.php3");
$result = spip_query ($query);
if ($auteur = mysql_fetch_object ($result)) {
$session = md5($id_auteur . $auteur->pass); // ici creer le numero de session
if (! ereg("^[^@]+@[^@]+$", $auteur->email))
$auteur->email = '@';
$cookie = $id_auteur ."@". $auteur->email ."@". $auteur->nom
."@". $session;
function cree_cookie_session ($auteur) {
if ($auteur->id_auteur > 0) {
$session = md5($auteur->id_auteur . $auteur->pass); // ici creer le numero de session
$cookie = $auteur->id_auteur ."@". $auteur->login ."@". $session;
return $cookie;
}
}
return $cookie;
}
// cree le cookie admin correspondant a l'auteur
function cree_cookie_admin ($auteur) {
if ($auteur->id_auteur > 0) {
$cookie = $auteur->id_auteur ."@". $auteur->login ."@". $auteur->nom ."@". $auteur->email;
return $cookie;
}
}
function verifie_cookie_session ($cookie) {
if (list(,$id_auteur,$email,$nom,$session) = decode_cookie_session ($cookie)) {
if (list(,$id_auteur,$login,$session) = decode_cookie_session ($cookie)) {
if ($id_auteur > 0) {
include_ecrire ("inc_connect.php3");
$query = "SELECT * FROM spip_auteurs WHERE id_auteur=$id_auteur";
$query = "SELECT * FROM spip_auteurs WHERE id_auteur=$id_auteur AND login='$login'";
$result = spip_query ($query);
if ($auteur = mysql_fetch_object ($result)) {
if ($session == md5($id_auteur . $auteur->pass)) { // ici verifier le num de session dans la base
......@@ -51,32 +48,42 @@
}
function decode_cookie_session ($cookie) {
if (eregi("^([0-9]+)@([^@]*@[^@]*)@(.*)@([0-9A-Z]+)$", $cookie, $regs))
if (eregi("^([0-9]+)@(.*)@([0-9A-Z]+)$", $cookie, $regs))
return $regs;
// list(,$id_auteur,$email,$nom,$session) = decode_cookie ($cookie)
// list(,$id_auteur,$login,$session) = decode_cookie_session($cookie)
}
function pose_cookie_session ($cookie) {
function pose_cookie_session ($cookie, $cookie_admin='') {
global $redirect;
$cookie_pose = false;
// est-ce qu'il faut poser le cookie ?
if ($GLOBALS['HTTP_COOKIE_VARS']['spip_session'] == $cookie)
return true;
// est-ce qu'on peut faire qqchose ?
if (headers_sent() OR $GLOBALS['pose_cookie'] == 'fini')
// est-ce qu'on peut le faire ?
if (headers_sent()) // OR $GLOBALS['pose_cookie'] == 'fini')
return false;
// est-ce qu'il faut popper vers la racine ?
$my_uri = $GLOBALS['REQUEST_URI'];
if (ereg("/ecrire/", $my_uri)) {
@header("Location: ../spip_session.php3?cookie=$cookie&redirect=".rawurlencode($my_uri));
if (!$redirect)
$redirect = $my_uri;
@header("Location: ../spip_cookie.php3?cookie_session=$cookie&redirect=".rawurlencode($redirect));
return false;
}
// on pose
if ($cookie) {
// un cookie spip_session d'authentification,
// qui meurt avec le navigateur
setcookie ('spip_session', $cookie);
// un cookie spip_admin qui n'authentifie pas
// mais conserve des infos deux semaines
setcookie ('spip_admin', $cookie, time() + 14*24*3600);
$cookie_pose = true;
}
return $cookie_pose;
......@@ -84,12 +91,13 @@
function lit_cookie_session () {
return $COOKIE_VARS['spip_session'];
return $GLOBALS['HTTP_COOKIE_VARS']['spip_session'];
}
function supprime_cookie_session () {
setcookie ('spip_session', '');
setcookie ('spip_session', '', time() - 24*3600);
setcookie ('spip_admin', '', time() - 24*3600);
}
......@@ -98,9 +106,9 @@
if (ereg("/ecrire/", $GLOBALS[REQUEST_URI]))
$zap = "../";
echo "<form action='$zap"."spip_session.php3' method='post'>".
"<tt>&nbsp;login <input type='text' name='session_login' value='$login' size=8><br>".
"sesame <input type='password' name='session_password' value='' size=8></tt>";
echo "<form action='$zap"."spip_cookie.php3' method='post'>".
"<tt>&nbsp;login <input type='text' name='session_login' value='$login' size=10 style='font-size: 10pt'><br>".
"sesame <input type='password' name='session_password' value='' size=10 style='font-size: 10pt'></tt>";
if ($redirect) echo
"<input type='hidden' name='redirect' value='$redirect'>";
......
......@@ -118,7 +118,7 @@ if ($connect_statut == "0minirezo" AND $cookie_admin) {
echo "<hr>";
echo "<font face='Verdana,Arial,Helvetica,sans-serif' size=1>";
echo "<img src='img_pack/triangle.gif' width=16 height=14 border=0>";
echo " <a href='../spip_cookie.php3?supp_cookie=oui'><B>SUPPRIMER LE COOKIE</B></A>";
echo " <a href='../spip_cookie.php3?cookie_admin=-1&redirect=./ecrire/index.php3'><B>SUPPRIMER LE COOKIE</B></A>";
echo aide ("cookie");
echo "</font>";
}
......@@ -276,7 +276,7 @@ if ($connect_statut == "0minirezo") {
echo "Vous pouvez activer un cookie, ce qui vous permettra d'&eacute;diter directement les articles depuis le site public.";
echo aide ("cookie");
bouton("Placer un cookie", "../spip_cookie.php3?ajout_cookie=oui");
bouton("Placer un cookie", "../spip_cookie.php3?cookie_admin=oui&redirect=./ecrire/index.php3");
echo "<p><hr><p>";
}
}
......
<?php
include ("inc_presentation.php3");
include ("inc_version.php3");
include ("inc_connect.php3");
include ("inc_session.php3");
include_local ("inc_presentation.php3");
include_local ("inc_connect.php3");
include_local ("inc_meta.php3");
include_local ("inc_session.php3");
$nom_site = lire_meta('nom_site');
$url_site = lire_meta('adresse_site');
install_debut_html("$nom_site : connexion &agrave; l'espace priv&eacute;");
// reconnaitre un login du cookie d'admin
if (ereg("^[0-9]+@([^@]+)", $GLOBALS['spip_admin'], $regs))
$login = $regs[1];
install_debut_html("SPIP connexion experimentale par cookie");
echo "<p><FONT FACE='Verdana,Arial,Helvetica,sans-serif' SIZE=4><B>Vos codes d'acces</B></FONT>";
echo "<p>";
affiche_formulaire_login($login, 'ecrire/index.php3');
affiche_formulaire_login($login, './ecrire/index.php3');
echo '<p><font face="Verdana,Arial,Helvetica,sans-serif">';
if (($session = $GLOBALS[HTTP_COOKIE_VARS][spip_session]) && verifie_cookie_session($session)) {
echo '<a href="../spip_session.php3?cookie=-1&redirect=ecrire/login.php3">Vous etes connecte : dŽconnexion</a><br>';
if (($session = $GLOBALS['HTTP_COOKIE_VARS']['spip_session']) && verifie_cookie_session($session)) {
echo '<a href="../spip_cookie.php3?cookie_session=-1&redirect=./ecrire/login.php3">Vous &ecirc;tes connect&eacute; : d&eacute;connexion</a><br>';
} else {
echo 'Vous n\'etes pas connecte par cookie de session<br>';
echo 'Vous n\'&ecirc;tes pas connect&eacute; par cookie de session<br>';
}
if ($GLOBALS[cookie] == 'cookie') {
// temporaire...
if ($GLOBALS['cookie'] == 'cookie') {
setcookie('cookie_login','experimental', time()+(3600*24*365));
} else if ($GLOBALS[cookie] == 'off') {
} else if ($GLOBALS['cookie'] == 'off') {
setcookie('cookie_login','');
}
echo "<p><font size=2>";
if (($GLOBALS[cookie_login] == 'experimental' OR $GLOBALS[cookie] == 'cookie') AND !($GLOBALS[cookie] == 'off'))
if (($GLOBALS['cookie_login'] == 'experimental' OR $GLOBALS['cookie'] == 'cookie') AND !($GLOBALS['cookie'] == 'off'))
echo "(La connexion par cookie est active sur ce navigateur : pour la desactiver supprimez le cookie 'cookie_login' de votre navigateur
ou <a href='login.php3?cookie=off'>cliquez ici</a>...)";
else
echo '<a href="login.php3?cookie=cookie">Demander la connexion par cookie sur ce navigateur</a>';
echo "</font>";
// ...temporaire
if ($url_site)
echo "<p><font size=2><a href='$url_site'>Retour au site</a></font>";
install_fin_html();
......
......@@ -43,11 +43,27 @@ include_local ("inc-cache.php3");
//
// Presence du cookie de visiteur : valider ce cookie et extraire les donnees
//
if ($cookie = $HTTP_COOKIE_VARS[spip_session]) {
if ($cookie = $HTTP_COOKIE_VARS['spip_session']) {
include_ecrire ("inc_session.php3");
$visiteur_authentifie = verifie_cookie_session ($cookie);
} else
$visiteur = $visiteur_authentifie;
} else {
$visiteur_authentifie = false;
$visiteur = false;
// extraire quelques donnees visiteur du cookie d'admin
if (ereg("^([0-9]+)@([^@]+)", $HTTP_COOKIE_VARS['spip_admin'], $regs)) {
// definir $visiteur a partir du cookie
include_ecrire ("inc_connect.php3");
$id_auteur = $regs[1];
$login = $regs[2];
$query = "SELECT * FROM spip_auteurs WHERE id_auteur=$id_auteur AND login='$login'";
if (($result = spip_query ($query)) AND ($visiteur = mysql_fetch_object($result))) {
$visiteur->pass = '';
$visiteur->htpass = '';
}
}
}
//
// Ajouter un forum
......@@ -288,13 +304,10 @@ function bouton($titre, $lien) {
//
// Fonctionnalites administrateur (declenchees par le cookie)
// Fonctionnalites administrateur (declenchees par le cookie visiteur, authentifie ou non)
//
$cookie_admin = $HTTP_COOKIE_VARS['spip_admin'];
$admin_ok = ($cookie_admin == 'admin');
if ($admin_ok AND !$flag_preserver) {
if ((($HTTP_COOKIE_VARS['spip_admin'] == 'oui') OR ($visiteur->statut == '0minirezo')) AND !$flag_preserver) {
if ($id_article) {
bouton("Modifier cet article ($id_article)", "./ecrire/articles.php3?id_article=$id_article");
}
......
<?php
include ("ecrire/inc_version.php3");
include_ecrire("inc_cookie.php3");
include ("ecrire/inc_version.php3");
include_ecrire ("inc_connect.php3");
include_ecrire ("inc_session.php3");
if ($ajout_cookie == "oui") {
ajout_cookie_admin();
}
if ($supp_cookie == "oui") {
supp_cookie_admin();
}
// tentative de login
if ($session_login !='' AND $session_password != '')
{
// verifie l'auteur
$md5pass = md5($session_password);
$query = "SELECT * FROM spip_auteurs WHERE login='$session_login' AND pass='$md5pass'";
$result = spip_query($query);
if ($auteur = mysql_fetch_object($result)) {
$cookie_session = cree_cookie_session ($auteur);
$cookie_admin = cree_cookie_admin ($auteur);
}
}
$url = "./ecrire/" . $redirect;
@header ("Location: $url");
// un cookie de session a poser
if ($cookie_session == -1)
supprime_cookie_session();
else if ($cookie_session)
pose_cookie_session($cookie_session, $cookie_admin);
// cookie d'admin ?
if ($cookie_admin == "oui") {
setcookie('spip_admin', 'admin', time() + 3600 * 24 * 7);
} else if ($cookie_admin == -1) {
setcookie('spip_admin', '', time() - 3600 * 24 * 7);
}
// redirection
if (!$redirect)
$redirect = './index.php3';
@header("Location: $redirect");
?>
\ No newline at end of file
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter