Version: .6b
Type: Full Script
Category: Other
License: GNU General Public License
Description: This script will handle user authentication against a file on your server so you dont need to have a database. it is helpful, though, to place this file outside of the html directory so that web users can't read everyone's passwords.
****Please note these are two files and should be split and saved seperately!***
**Also, to use this script simply do the following:
<?
require('path/to/header.php');
?>
YOUR HTML HERE
<?
require('path/to/footer.php');
?>
where path/to/footer.php is replaced with the paths to their respective files.
**********
*header.php*
**********
-----------------------------------------------------------------------------
<?
if (!isset($PHP_AUTH_USER)) {
// If empty, send header causing dialog box to appear
header('WWW-Authenticate: Basic realm="The Crazy Train"');
header('HTTP/1.0 401 Unauthorized');
exit;
}
else if (isset($PHP_AUTH_USER)) {
$filename = "/home/ddclub/webpass.txt"; //the name of the file and the path are entirely up to you but dont leave the file inside the public_html directory for anyone to see. Put it outside so the path is something like /home/username/webpass.list.
$fd = fopen ($filename, "r");
$i = 0;
for ($i = 0;!feof($fd);$i++) {
$buffer[$i] = fgets($fd, 4096);
}
fclose ($fd);
}
$PHP_AUTH_USER = Strtoupper($PHP_AUTH_USER); //converts to uppercase
$PHP_AUTH_PW = Strtoupper($PHP_AUTH_PW); // same thing
$j=sizeof($buffer); // finds out how many elements of $buffer there are
for ($i=0;$i<=$j;$i++) {
$buffer[$i] = Strtoupper($buffer[$i]);
if ($buffer[$i] == "$PHP_AUTH_USER:$PHP_AUTH_PW
") { //this line evaluates for every element of $buffer and checks for a line that matches the inputed username and password. The new line at the end is necisary because the file has a line end as well.
$auth=1;
break;
}
}
if ($auth == 1) {
?>
-----------------------------------------------------------------------------
end header.php
**********
*footer.php *
**********
-----------------------------------------------------------------------------
<?
}
else {
header('WWW-Authenticate: Basic realm="The Crazy Train"');
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required.';
exit;
}
return;
?>
-----------------------------------------------------------------------------
end footer.php
please note that your webpass.list file should looke like this:
usernam;password
whoever;whatever
admin;password
<this line intentionally left blank but it does need to be in the file>
after the last entry there needs to be an extra line becuase the script compares every line to "$PHP_AUTH_USER;PHP_AUTH_PW
"