You would find this task much easier with an SQL database of some kind. If you can't use MySQL, how about SQLite? SQLite just stores the database as a simple file, so you don't have to set up your server to support it, other than having PHP bindings, which come by default as of PHP5.
Code:
define('SITE_SPECIFIC_SHA_SALT', 'BLARGH!!!');
session_start();
function get_users_database() {
static $sql = sqlite_factory('users.db', 0666, $error)
or die('Error opening database: ' . $error);
init_users_db($sql);
return $sql;
}
function init_users_db($sql) {
$sql->queryExec('CREATE TABLE IF NOT EXISTS users (username TEXT, password TEXT, PRIMARY KEY(username))', $error)
or die('Couldn\'t create table: ' . $error);
}
function add_user($name, $pass) {
if (!$name || !$pass)
return false;
$sql = get_users_database();
return $name
&& $pass
&& $sql->queryExec(sprintf('INSERT INTO users VALUES (\'%s\', \'%s\')'),
sqlite_escape_string($name),
sha1(SITE_SPECIFIC_SHA_SALT . $pass));
}
function login($name, $pass) {
$sql = get_users_database();
return $name
&& $pass
&& $sql->queryExec(sprintf('SELECT username FROM users WHERE username = \'%s\' AND password = \'%s\'',
sqlite_escape_string($name),
sha1(SITE_SPECIFIC_SHA_SALT . $pass)))
&& !!($_SESSION['username'] = $name);
}
function validate_user() {
return !!@$_SESSION['username'];
}
Bookmarks