begin process at 2008 08 20 12:41:48
1 228 823 membres
193 nouveaux aujourd'hui
14 257 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONTROLE D'ACCÈS AVEC WWW-AUTHENTICATE:


Information sur la source

Catégorie :Sécurité & Cryptage Classé sous : htaccess, php, wwwauthenticate Niveau : Débutant Date de création : 27/08/2007 Date de mise à jour : 28/08/2007 09:28:08 Vu : 7 289

Note :
Aucune note

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

Description

Controler un accès avec le systeme d'auhtentification HTTP. Avec la possibilité de se déconnecter!

Source

  • <?php
  • class auth
  • {
  • function auth(){}
  • function is_auth()
  • {
  • $fi=fopen('.htpasswd','r');
  • $list=fread($fi,filesize('.htpasswd'));
  • fclose($fi);
  • $t=explode(":",$list);
  • if(!isset($_SESSION['connexion']))$_SESSION['connexion']=0;
  • if($_SESSION['connexion']==2 && crypt($_SERVER['PHP_AUTH_PW'],"sd")!=$t[1])$_SESSION['connexion']=3;
  • if($_SESSION['connexion']==2 || $_SERVER['PHP_AUTH_USER']!=$t[0] || crypt($_SERVER['PHP_AUTH_PW'],"sd")!=$t[1] )
  • {header("WWW-Authenticate: Basic realm=\"\"");$this->out();}
  • else
  • {
  • print("<a href=\"".basename($_SERVER['PHP_SELF'])."?end\">Deconnexion</a><br/>");
  • $_SESSION['connexion']=1;
  • }
  • }
  • function close()
  • {
  • $_SESSION['connexion']=2;
  • $this->out();
  • }
  • function out(){die("Non autorisé");}
  • };
  • $user = new auth;
  • if(isset($_GET['end'])){$user->close();}
  • $user->is_auth();
  • ?>
<?php
class auth
{
	function auth(){}
	function is_auth()
	{
		$fi=fopen('.htpasswd','r');
		$list=fread($fi,filesize('.htpasswd'));
		fclose($fi);
		$t=explode(":",$list);
		if(!isset($_SESSION['connexion']))$_SESSION['connexion']=0;
		if($_SESSION['connexion']==2 && crypt($_SERVER['PHP_AUTH_PW'],"sd")!=$t[1])$_SESSION['connexion']=3;
		if($_SESSION['connexion']==2 || $_SERVER['PHP_AUTH_USER']!=$t[0] || crypt($_SERVER['PHP_AUTH_PW'],"sd")!=$t[1] )
		{header("WWW-Authenticate: Basic realm=\"\"");$this->out();}
		else
		{
			print("<a href=\"".basename($_SERVER['PHP_SELF'])."?end\">Deconnexion</a><br/>");
			$_SESSION['connexion']=1;
		}
	}
	function close()
	{
		$_SESSION['connexion']=2;
		$this->out();
	}
	function out(){die("Non autorisé");}
};
$user = new auth;
if(isset($_GET['end'])){$user->close();}
$user->is_auth();
?>

Conclusion

protection d'un répertoire par authentification HTTP sans .htaccess. De plus, on peut se déconnecter. Il faut saisir un mauvais mot de passe pour ensuite pouvoir se reconnecter avec le bon mot de passe.
Ciao
27 août 2007 16:18:06 :
Précision sur la déconnexion
28 août 2007 09:28:09 :
c vrai que le constructeur ne sert à rien .. J'ai changé la fonction js. en fait le but est de pouvoir faire une authentification avec le protocole HTTP. Pour se déconnecter, il faut fermer le navigateur. On peut gérer une déconnexion en obligeant à saisir un mauvais mot de passe pour pouvoir ensuite se reconnecter. 1 ) On s'identifie avec le bon mot de passe 2 ) on se déconnecte 3 ) pour se reconnecter, il faut saisir un mauvais mot de passe 4 ) on se connecte avec le bon mot de passe
  • signaler à un administrateur
    Commentaire de codefalse le 27/08/2007 23:57:18 administrateur CS

    ta fonction : function auth(){} ne sert a rien, meme si c'est le constructeur en php4, tu n'est pas obligé de la mettre si elle ne sert a rien (sauf si on m'aurai caché des choses)
    De plus, tu met une fonction javascript "goLink" qui n'existe nulle part, donc si je teste ton code, ca ne marchera pas.

    Apres, j'ai un peu du mal à saisir l'utilité de ton code. Tu pourrai expliquer d'avantage stp ? merci :)

  • signaler à un administrateur
    Commentaire de monsieurjean le 28/08/2007 09:29:48

    salut,
    j'ai fait une mise à jour. Le code js fait appel à une fonction perso, désolé ... J'ai rectifié. J'explique le principe du code dans l'histo de mise à jour.

  • signaler à un administrateur
    Commentaire de stay le 28/08/2007 14:11:49

    Pourquoi tu veux obligé les gens à faire une erreur puis de taper le bon mot de passe ?
    - Cela ne rendra pas ton form plus sécurisé
    - De plus tu n’a pas visé l’axécibilité ou ergonomie

    Et pour les mêmes raisons tu devrais couper ta session de cette façon


    // On appelle la session
    session_start();
    //destruction de toutes les variable de sessions
    session_unset() ;
    // On écrase le tableau de session
    $_SESSION = array();
    session_unregister('connexion');
    // On détruit la session
    session_destroy();
    header ("Location: CHEMIN");

  • signaler à un administrateur
    Commentaire de monsieurjean le 28/08/2007 16:03:21

    sur une authentification en HTTP, tu ne peux pas te déconnecter. Ce code permet de le faire, et ca oblige l'utilisateur à faire une erreur pour réaccéder au répertoire.
    Cette méthode d'accès évite la création d'un formulaire et de ce qui en découle ..

  • signaler à un administrateur
    Commentaire de stay le 28/08/2007 16:12:47

    Bizar ton truc, je ne vois pas à quoi il sert

Ajouter un commentaire

Discussions en rapport avec ce code source

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS