一个基于文本文件的用户校验程序
****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($fd4096);
        }
        
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"