I wrote a simple file based authentication class just the other day....
<?
/*
Simple File Based Authentication System
Written by w.geoghegan [at] gmail [dot] com
*/
error_reporting(E_ALL);
class GuardDog {
var $USERS_FILE = 'USERS.GD';
var $USERTABLE = array();
function GuardDog() {
$this -> LoadUsers();
}
function Login($gdUser,$gdPwd) {
$_SESSION['gdUser'] = $gdUser;
$_SESSION['gdPwd'] = md5($gdPwd);
return $this -> CheckUser();
}
function Logout() {
session_destroy();
}
function CheckUser() {
if (!isset($_SESSION['gdUser']))
return false;
else {
$gdUser = $_SESSION['gdUser'];
$gdPwd = $_SESSION['gdPwd'];
if (isset($this -> USERTABLE[$gdUser])) {
if ($this -> USERTABLE[$gdUser] == $gdPwd)
return true;
else
return false;
}
else
return false;
}
}
function LoadUsers() {
unset($this -> USERTABLE);
$f = fopen($this -> USERS_FILE, "r") or DIE("<b>GuardDog - Fatal Error:</b> Unable to open {$this -> USERS_FILE} for read access");
while (!feof($f)) {
$line = fgets($f, 1024);
if (trim($line) != '') {
$bits = split("\|", $line);
$this -> USERTABLE[trim($bits[0])] = trim($bits[1]);
}
}
fclose($f);
}
function CreateUser($gdUser,$gdPwd) {
if (!isset($this -> USERTABLE[$gdUser])) {
$f=fopen("USERS.GD", "a+");
fwrite($f, "$gdUser|" . md5($gdPwd) . "\r\n");
fclose($f);
return true;
}
else
return false;
}
function DeleteUser($gdUser) {
if (isset($this -> USERTABLE[$gdUser])) {
unset($this -> USERTABLE[$gdUser]);
$f = fopen($this -> USERS_FILE, "w") or DIE("<b>GuardDog - Fatal Error:</b> Unable to create {$this -> USERS_FILE} for write access");
foreach ($this -> USERTABLE as $key => $value) {
fwrite($f, "$key|$value\r\n");
}
fclose($f);
$this -> LoadUsers();
return true;
}
else
return false;
}
}
?>
The below is an example of how to use this class...
<?
session_start();
require("guarddog.php");
$GD = new GuardDog();
if (isset($_GET['logout'])) {
$GD -> Logout();
DIE('You have been logged out.<br>Click <a href="index.php">here</a> to continue....');
}
if ($GD -> Checkuser() == false) {
if (!isset($_POST['gdUser'])) {
?>
<form action="index.php" method="POST">
Username: <input type="textbox" name="gdUser"><br>
Password: <input type="textbox" name="gdPwd"><br>
<input type="submit" value="Login">
</form>
<?
}
else
{
if ($GD -> Login($_POST['gdUser'], $_POST['gdPwd']) == false)
print 'Login failed!<br>Click <a href="index.php">here</a> to try again.';
else
print 'Login Success!<br>Click <a href="index.php">here</a> to continue....';
}
}
else
{
if (!isset($_GET['create'])) {
}
else
{
if ($GD -> CreateUser($_GET['user'], $_GET['pwd']) == true)
print "User created OK!<br><br>";
else
print "User could not be created! Already exists?!<br><br>";
}
if (isset($_GET['delete'])) {
if ($GD -> DeleteUser($_GET['user']) == true)
print "User Deleted OK!<br><br>";
else
print "User could not be deleted! Doesn't exist?!<br><br>";
}
print "You are logged in as {$_SESSION['gdUser']}.<br><br><a href=\"index.php?create=1&user=dave&pwd=dave\">This link</a> CREATES another user with username DAVE, password DAVE<br>
<br><a href=\"index.php?delete=1&user=dave\">This link</a> DELETES a user with username DAVE<br>
<br>Click <a href=\"index.php?logout\">here</a> to logout.";
}
?>
Hope this helps 🙂