IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Sécurité
        Connaître l'ip réelle du visiteur
        Utiliser l'authentification HTTP
        Authentification LDAP avec Open LDAP

rechercher
precedent    sommaire    suivant    telecharger


Auteur : jolatouf
Version : 16/01/2006
Connaître l'ip réelle du visiteur
function realip() {
   //recupere l adresse ip de l ordi de l utilisateur
   if (isSet($_SERVER)) {
    if (isSet($_SERVER["HTTP_X_FORWARDED_FOR"])) {
     $realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
    } elseif (isSet($_SERVER["HTTP_CLIENT_IP"])) {
     $realip = $_SERVER["HTTP_CLIENT_IP"];
    } else {
     $realip = $_SERVER["REMOTE_ADDR"];
    }

   } else {
    if ( getenv( 'HTTP_X_FORWARDED_FOR' ) ) {
     $realip = getenv( 'HTTP_X_FORWARDED_FOR' );
    } elseif ( getenv( 'HTTP_CLIENT_IP' ) ) {
     $realip = getenv( 'HTTP_CLIENT_IP' );
    } else {
     $realip = getenv( 'REMOTE_ADDR' );
    }
   }
   return $realip;
}

Auteur : Sub0
Version : 16/01/2006
Utiliser l'authentification HTTP
Le login est définit dans le script. Le fichier .htaccess permet d'utiliser la variable $_SERVER['REMOTE_USER'] pour mémoriser la saisie durant toute la session.
En effet, lorsque PHP est éxécuté en mode CGI, les variables 'PHP_AUTH_USER' et 'PHP_AUTH_PW' seront toujours vides.
Voici donc la solution :
<?php
//============================================================
//  PARAMETRES DE CONFIGURATION
//============================================================
$cfg['adm_login']  = 'admin';  // Le login d'administrateur
$cfg['adm_pass']   = 'pass';   // Le mot de passe d'administrateur


//============================================================
//  FORMULAIRE ET TEST D'AUTHENTIFICATION
//============================================================
if((!isset($_SERVER['PHP_AUTH_USER']) ||
    !isset($_SERVER['PHP_AUTH_PW'])) &&
    preg_match('/Basic\s+(.*)$/i',$_SERVER['REMOTE_USER'],$matches)){
  list($name,$pass)=explode(':',base64_decode($matches[1]));
  $_SERVER['PHP_AUTH_USER']=strip_tags($name);
  $_SERVER['PHP_AUTH_PW']=strip_tags($pass);
}
if($_SERVER['PHP_AUTH_USER']!=$cfg['adm_login'] ||
   $_SERVER['PHP_AUTH_PW']!=$cfg['adm_pass']){
  header('WWW-Authenticate: Basic realm="Connexion..."');
  header('HTTP/1.0 401 Unauthorized');
  die('Erreur : Identification incorrecte !');
}


//============================================================
//  AUTHENTIFICATION ACCEPTEE
//============================================================
echo 'Authentification acceptée.';


//============================================================
?>
Le .htaccess
<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]
</IfModule>

Auteur : saint-pere
Version : 16/01/2006
Authentification LDAP avec Open LDAP
Avant tout, il faut vérifier que le fichier php.ini contienne bien :
extension=ldap.so
<?php   

// si un login + mot de passe a été saisi.
if($saisieEffectuer) { 
$ds=ldap_connect("W.X.Y.Z");  // Adresse du serveur LDAP
       
if ($ds) {   
 
    // identification 
    if (ldap_bind($ds)) {  // Connexion anonyme
 
        // preparation des données 
        // l'objet user n'est pas forcement appelé uid donc  à verifier
        $dn = "uid=$login , dc=MaSociete, dc=fr";  // la syntaxe doit être exacte
        // Lors d'un  encodage MD5 sur OpenLDAP une réencryptage est fait par défaut
        // Le mode de cryptage est conservé et concaténé dans votre mot de passe
        $value = "{MD5}".base64_encode( pack( 'H*' , md5($pass) ) );
        // userpassword est le nom du champs utilisé pour conserver votre mot de passe sur OpenLDAP
        // Celui ci est différent en fonction de l'annuaire (norme X500 utilisée)
        $attr = "userpassword"; 
 
        // comparaison des valeurs
        // l'affichage de userpassword est impossible car protégé dans slapd.conf
        // on est donc obligé de faire une comparaison directement dans le code pour que cela fonctionne
        $r=ldap_compare($ds, $dn, $attr, $value);
 
        if ($r === -1) {
            echo "Erreur : ".ldap_error($ds);
        } elseif ($r === TRUE) {
            echo "Mot de passe correct.";
        } elseif ($r === FALSE) {
            echo "Mot de passe incorrect : ".$value;
        }
 
    } else {
        echo "Impossible de se connecter au serveur LDAP.";
    }           
 
    ldap_close($ds);

} else {
    echo "Impossible de se connecter au serveur LDAP.";
}
 
}

?>


<html>
<head>
<title>Authentification</title>
</head>
<body>
<br>
<script language="Javascript">
function verifierSaisie() {
if(document.authentification.login.value=="") {
alert("Login non saisi.");
}
else {
if(document.authentification.pass.value=="") {
alert("Pass non saisi");
}
else {
document.authentification.cours.value="en cours...";
document.authentification.submit();
}
}
}
</script>
<div align="center">
<form name="authentification" action="<?php  $PHP_SELF ?>" method="post">
<table width="90%" border="0" cellspacing="0" >
<tr>
<td colspan="2" align="center"><b><font size="+1">Authentification</font></b></td>
</tr>
<tr>
<td>Login :</td>
<td><input style="border-style:solid" type="text" name="login" size="16" maxlength="30"></td>
</tr>
<tr>
<td>Pass :</td>
<td><input style="border-style:solid" type="password" name="pass" size="16" maxlength="30"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="hidden" value="true" name="saisieEffectuer">
<input type="button" value="Annuler" onclick="window.close()">&nbsp;
<input type="button" OnClick="verifierSaisie()" value="Ok"></td>
</tr>
</table>
<input type='text' style='border:none; ' name='cours' value='' size=11 >
</form>
</div>
</body>
</html>

rechercher
precedent    sommaire    suivant    telecharger

Valid XHTML 1.1!Valid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.