<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<h1>Создание нового пользователя</h1>
<form action="?" method="post">
Логин: <input type="text" name="login" /><br>
Пароль: <input type="password" name="password" /><br>
Подтвердите пароль: <input type="password" name="confirm_password" /><br>
<input type="submit" name="create" value="Создать">
</form>
<h1>Авторизация</h1>
<form action="?" method="post">
Логин: <input type="text" name="login" /><br>
Пароль: <input type="password" name="password" /><br>
<input type="submit" name="authorize" value="Войти">
</form>
<?php
$user = new User('./db.txt');
if (!empty($_POST['create'])) {
$user->create(
!empty($_POST['login']) ? $_POST['login'] : '',
!empty($_POST['password']) ? $_POST['password'] : '',
!empty($_POST['confirm_password']) ? $_POST['confirm_password'] : ''
);
}
if (!empty($_POST['authorize'])) {
$user->authorization(
!empty($_POST['login']) ? $_POST['login'] : '',
!empty($_POST['password']) ? $_POST['password'] : ''
);
}
?>
</body>
</html>
<?php
class User {
@var
private $_path = null;
@var
private $_hash = '1223-3459CMEefiwonin';
@param
public function __construct($path)
{
$this->_path = $path;
}
@param @param @return
public function authorization($login, $password)
{
if (empty($login)) {
echo '<p>Вы не ввели логин пользователя</p>';
return false;
}
$login = trim($login);
if (preg_match('/[^A-Za-z0-9\_\-]+/', $login)) {
echo '<p>В логине можно использовать только буквы латинского алфавита, арабские цифры и символы дефиса и подчеркивания</p>';
return false;
}
if (empty($password)) {
echo '<p>Вы не ввели пароль пользователя</p>';
return false;
}
$userInfo = $this->getByLogin($login);
if (empty($userInfo)) {
echo '<p>Пользователь не найден</p>';
return false;
}
if (md5($this->_hash . trim($password) . $this->_hash) !== $userInfo['password']) {
echo '<p>Пользователь не найден</p>';
return false;
}
echo '<p>Пользователь упешно авторизован</p>';
return true;
}
@param @param @param @return
public function create($login, $password, $confirmPassword)
{
if (empty($login)) {
echo '<p>Вы не ввели логин нового пользователя</p>';
return false;
}
$login = trim($login);
if (preg_match('/[^A-Za-z0-9\_\-]+/', $login)) {
echo '<p>В логине можно использовать только буквы латинского алфавита, арабские цифры и символы дефиса и подчеркивания</p>';
return false;
}
if (empty($password)) {
echo '<p>Вы не ввели пароль нового пользователя</p>';
return false;
}
if (empty($confirmPassword)) {
echo '<p>Вы не ввели подтверждение пароля</p>';
return false;
}
if ($confirmPassword !== $password) {
echo '<p>Пароль и подтверждение пароля не совпадают</p>';
return false;
}
$userInfo = $this->getByLogin($login);
if (!empty($userInfo)) {
echo '<p>Пользователь с логином "' . $login . '" уже существует</p>';
return false;
}
$string = $login . ' = "' . md5($this->_hash . trim($password) . $this->_hash) . '"';
if (!file_put_contents($this->_path, $string . "\n", FILE_APPEND | LOCK_EX)) {
echo '<p>Не удалось сохранить данные о новом пользователе</p>';
return false;
}
echo '<p>Новый пользователь успешно зарегистрирован</p>';
return true;
}
@param @return
public function getByLogin($login)
{
if (!file_exists($this->_path)) {
return false;
}
$fileHandler = fopen($this->_path, 'r');
while (($line = fgets($fileHandler)) !== false) {
$info = parse_ini_string(trim($line));
if (!empty($info[$login])) {
return array(
'login' => $login,
'password' => $info[$login],
);
}
}
return false;
}
}
_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.