Hi,
ich plage mich schon seit geraumer Zeit mit einem PHP Skript herum, welches einen User beim Apache Server Authentifiziert.
Folgender ablauf ist geplant :
Der User gibt seine Anmeldedaten in einem Formular ein (Name,PSW).
Nach dem Anmelde-Button, prüft das Script die .htpasswd File ob der User berechtigt ist in das geschützte Verz. zu wechseln (Das funzt 100%'ig).
Ist der Benutzer berechtigt, leitet das Script den User weiter! Und hier ist mein Problem, scheinbar Authentifiziert das Skript den User nicht, sondern prüft nur die Anmeldedaten ?!?!
Den beim aufruf des geschützten Verzeichnissen, werde ich wieder nach dem Passwort gefragt (es ist richtigt!!).
Das Skript :
<?
$auth = false; // Assume user is not authenticated
$text = 'NICHT ANGEMELDET';
if ($B1) {
if (isset( $PHP_AUTH_USER ) && isset($PHP_AUTH_PW)) {
// Read the entire file into the variable $file_contents
$filename = '/www/htdocs/xxxxx/xxxx/xxxx/.htpasswd';
$fp = fopen( $filename, 'r' );
$file_contents = fread( $fp, filesize( $filename ) );
fclose( $fp );
// Place the individual lines from the file contents into an array.
$lines = explode ( "\n", $file_contents );
// Split each of the lines into a username and a password pair
// and attempt to match them to $PHP_AUTH_USER and $PHP_AUTH_PW.
foreach ( $lines as $line ) {
list( $username, $password ) = explode( ':', $line );
if ( $username == "$PHP_AUTH_USER" ) {
// Get the salt from $password. It is always the first
// two characters of a DES-encrypted string.
$salt = substr( $password , 0 , 2 );
// Encrypt $PHP_AUTH_PW based on $salt
$enc_pw = crypt( $PHP_AUTH_PW, $salt );
if ( $password == "$enc_pw" ) {
// A match is found, meaning the user is authenticated.
// Stop the search.
$auth = true;
break;
}
}
}
}
if ( ! $auth ) {
$text = 'NICHT ANGEMELDET';
printf("<META HTTP-EQUIV=\"REFRESH\" CONTENT = \"0; URL=http://www.xxx-xxx.de/index.php\";>");
exit;
} else {
printf("<META HTTP-EQUIV=\"REFRESH\" CONTENT = \"0; URL=http://www.xxx-xxx.de/secure/index.html\";>");
} }
?>
ich plage mich schon seit geraumer Zeit mit einem PHP Skript herum, welches einen User beim Apache Server Authentifiziert.
Folgender ablauf ist geplant :
Der User gibt seine Anmeldedaten in einem Formular ein (Name,PSW).
Nach dem Anmelde-Button, prüft das Script die .htpasswd File ob der User berechtigt ist in das geschützte Verz. zu wechseln (Das funzt 100%'ig).
Ist der Benutzer berechtigt, leitet das Script den User weiter! Und hier ist mein Problem, scheinbar Authentifiziert das Skript den User nicht, sondern prüft nur die Anmeldedaten ?!?!
Den beim aufruf des geschützten Verzeichnissen, werde ich wieder nach dem Passwort gefragt (es ist richtigt!!).
Das Skript :
<?
$auth = false; // Assume user is not authenticated
$text = 'NICHT ANGEMELDET';
if ($B1) {
if (isset( $PHP_AUTH_USER ) && isset($PHP_AUTH_PW)) {
// Read the entire file into the variable $file_contents
$filename = '/www/htdocs/xxxxx/xxxx/xxxx/.htpasswd';
$fp = fopen( $filename, 'r' );
$file_contents = fread( $fp, filesize( $filename ) );
fclose( $fp );
// Place the individual lines from the file contents into an array.
$lines = explode ( "\n", $file_contents );
// Split each of the lines into a username and a password pair
// and attempt to match them to $PHP_AUTH_USER and $PHP_AUTH_PW.
foreach ( $lines as $line ) {
list( $username, $password ) = explode( ':', $line );
if ( $username == "$PHP_AUTH_USER" ) {
// Get the salt from $password. It is always the first
// two characters of a DES-encrypted string.
$salt = substr( $password , 0 , 2 );
// Encrypt $PHP_AUTH_PW based on $salt
$enc_pw = crypt( $PHP_AUTH_PW, $salt );
if ( $password == "$enc_pw" ) {
// A match is found, meaning the user is authenticated.
// Stop the search.
$auth = true;
break;
}
}
}
}
if ( ! $auth ) {
$text = 'NICHT ANGEMELDET';
printf("<META HTTP-EQUIV=\"REFRESH\" CONTENT = \"0; URL=http://www.xxx-xxx.de/index.php\";>");
exit;
} else {
printf("<META HTTP-EQUIV=\"REFRESH\" CONTENT = \"0; URL=http://www.xxx-xxx.de/secure/index.html\";>");
} }
?>
Kommentar