IPConfig
Новичок
Насколько безопасна написанная мной авторизация?
Насколько безопасна написанная мной авторизация?
Дамп:
Система авторизации:
Система проверки(вызывается при открытии любой страницы):
Прежде чем вводить её, хотел бы узнать мнение профессионалов...
Соответственно если массив $user существует, значит пользователь авторизирован.
Поле su в базе означает уровень прав пользователя...
Насколько безопасна написанная мной авторизация?
Дамп:
PHP:
CREATE TABLE `users` (
`id` int(10) NOT NULL auto_increment,
`login` varchar(100) default NULL,
`passwd` varchar(100) default NULL,
`email` varchar(200) default NULL,
`su` int(1) default NULL,
`hash` varchar(50) default NULL,
`ip` varchar(10) default NULL,
`last_login` varchar(20) NOT NULL,
`register` varchar(20) NOT NULL,
`alter_dop` text NOT NULL,
PRIMARY KEY (`id`),
KEY `login` (`login`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COMMENT='Таблица пользователей сайта';
PHP:
if(!isset($_POST['login']))die("Не введен Login");
if(!isset($_POST['password']))die("Не введен Password");
if(isset($_POST['remember']))$remember=1; else $remember=0;
unset($_COOKIE['uid']);
unset($_COOKIE['hash']);
unset($hash);
unset($uid);
$ip=mysql_real_escape_string(substr($_SERVER['REMOTE_ADDR'], 0, 10));
$login=mysql_real_escape_string(strtolower($_POST['login']));
$pass=mysql_real_escape_string(md5($_POST['password']));
$last=time();
$resource_auth=mysql_query("select * from users where `login`='$login' and `passwd`='$pass' limit 1");
if(!$auth=mysql_fetch_array($resource_auth)){
$forma="Ошибка: логин или пароль введены неверно - $login(".$_POST['login'].") - $pass";
} else {
$hash=md5($auth['login'].$auth['passwd']."-".$auth['register'].$auth['last_login']);
$uid=intval($auth['id']);
$reg_auth="UPDATE `users` SET `hash` = '$hash', `ip` = '$ip', `last_login` = '$last' WHERE `id` ='$uid' LIMIT 1";
if(mysql_query($reg_auth,$con)){
if($remember==1){
setcookie("uid", $uid,time()+3600*24*365,"/",$cook_dom);
setcookie("hash", $hash,time()+3600*24*365,"/",$cook_dom);
} else {
setcookie("uid", $uid,time()+3600,"/",$cook_dom);
setcookie("hash", $hash,time()+3600,"/",$cook_dom);
}
$forma="";
header("Location: $murl");
} else {
$forma="Ошибка: Системная ошибка авторизации - ".mysql_error();
}
}
PHP:
//Обрабатываем пользователя
unset($user); //Удаляем всю старую информацию о пользователе
if(!isset($_COOKIE['uid']))$uid=0; else $uid=intval($_COOKIE['uid']);
if(($uid!=0) and isset($_COOKIE['hash'])){
$hashd=mysql_real_escape_string($_COOKIE['hash']);
$ip=mysql_real_escape_string(substr($_SERVER['REMOTE_ADDR'], 0, 10));
$resource_login=mysql_query("select * from users where `id`='$uid' and `hash`='$hashd' and `ip`='$ip' limit 1");
if(!$user=mysql_fetch_array($resource_login)){
unset($_COOKIE['uid']);
unset($_COOKIE['hash']);
//header("Location: $murl");
}
}
if(!isset($user)){
$loginform="<ul><li>
<b>Авторизация:</b><br><form name=login method=post action=$murl/auth><table border=1 width=70%>
<tr><td>Login: </td><td><input type=text size=15 name=login></td></tr>
<tr><td>Password: </td><td><input type=text size=15 name=password></td></tr>
<tr><td colspan=2><center><input type=submit name=ok value=ok></center>
<br>
<a href=$murl/reg>регистрация</a>
</td></tr></table></form>
</li></ul>";
} else {
$loginform="<ul><li>Привет, <b>".$user['login']."</b></li>";
$loginform.="<li><a href=$murl/all.php?a=logout>Выход</a></li>";
$loginform.="</ul>";
}
Прежде чем вводить её, хотел бы узнать мнение профессионалов...
Соответственно если массив $user существует, значит пользователь авторизирован.
Поле su в базе означает уровень прав пользователя...