| | function realip() {
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 | | |
| |
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
$cfg['adm_login'] = 'admin';
$cfg['adm_pass'] = 'pass';
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 !');
}
echo 'Authentification acceptée.';
?> |
Le .htaccess | <IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]
</IfModule> |
|
| |
Avant tout, il faut vérifier que le fichier php.ini contienne bien :
extension=ldap.so
<?php
if($saisieEffectuer) {
$ds=ldap_connect("W.X.Y.Z");
if ($ds) {
if (ldap_bind($ds)) {
$dn = "uid=$login , dc=MaSociete, dc=fr";
$value = "{MD5}".base64_encode( pack( 'H*' , md5($pass) ) );
$attr = "userpassword";
$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()">
<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> |
|
|
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.