Dla chętnych tym którym "znudziło" się korzystanie z mysql pod jakieś małe projekty. Prosty system logowania/rejestracji na plikach ( Klasa ).
<?php @session_start();
/**
* 1.0v Beta
* txtAM - txt account manager
*
* skrypt oparty na plikach.
*/
class txtAM
{
var $root_folder = './account/';
var $time = 0;
var $data = array('login'=>0,
'password'=>1,
'email'=>2,
'register_time'=>3);
var $salt = "@!$%^&*()FVCDX";
function txtAM(){
$this->time = time();
}
function delete($login)
{
$account_dir = $this->account_dir($login);
if( !file_exists($account_dir) )
{
print "This user does not exist ...";
return false;
}
@unlink($account_dir);
}
function login($login, $password)
{
$user = $this->account_dir($login);
if( !file_exists($user) )
{
print "incorrect data";
return false;
}
$line = $this->readLine($user);
$pass = $line[1];
if( md5($password) != $pass )
{
print "incorrect data";
return false;
}
$_SESSION['user'] = $line;
}
function create_account($login, $password, $email)
{
if( empty($login) or empty($password) or empty($email) )
{
print "Not given username, password or e-mail";
return false;
}
if( !strstr($email, '@') )
{
print "The given e-mail is invalid";
return false;
}
$account_dir = $this->account_dir($login);
if( file_exists($account_dir) )
{
print "This username is already taken";
return false;
}
$file = $login . "\n";
$file .= md5($password) . "\n";
$file .= $email . "\n";
$file .= $this->time;
file_put_contents($account_dir, $file);
print "Your account has been successfully established";
return true;
}
function getInfo( $info ){
return $_SESSION['user'][ $this->data[$info] ];
}
function account_dir($login)
{
$len = strlen($login);
for($i=0; $i<$len; $i++){
$file .= ord($login[$i]);
}
return $this->root_folder.$file.'.'.md5($login.$this->salt);
}
function readLine($user){
return explode("\n", file_get_contents($user));
}
}
var $salt = "@!$%^&*()FVCDX";
ten salt należy sobie zmienić na dowolny ciąg znaków, każdy powinien to zrobić ponieważ zmniejsza to szanse na włamanie się na konto.
Funkcje:
$am->login($login, $password)
Logujemy się na konto podanymi danymi, login $login i hasło $password
$am->create_account($login, $password, $email)
tworzymy konto
$am->delete($login)
usuwamy konto
$am->getInfo($info)
Pobieramy informacje dotyczące naszego konta na którym aktualnie się znajdujemy...
typy zmiennej $info są następujące:
login, password, email, register_time
Do poprawnego działania, musimy mieć na serwerze folder "account" lub inny folder, nazwę można zmienić w:
var $root_folder
Ktoś ma pomysł jaką funkcje jeszcze można dodać? pisać w temacie...
Użytkownik Gh0st edytował ten post 07.07.2012 15:06