<?php
if(isset($_POST[\'submit\'])){
$data[\'login\'] = htmlspecialchars($_POST[\'login\']);
$data[\'pass\'] = htmlspecialchars($_POST[\'pass\']);
if(empty($data[\'login\'])){
$error[] = \'Вы не ввели логин!\';
}elseif(!isset($data[\'login\']{3}) || isset($data[\'login\']{16})){
$error[] = \'Недопустимая длинна логина!\';
}elseif(!preg_match(\'/^([a-zA-Z0-9_-])+$/\', $data[\'login\'])){
$error[] = \'Недопустимый формат логина!\';
}
if(empty($data[\'pass\'])){
$error[] = \'Вы не ввели пароль!\';
}elseif(!isset($data[\'pass\']{5}) || isset($data[\'pass\']{32})){
$error[] = \'Недопустимая длинна пароля!\';
}elseif(!preg_match(\'/^([a-zA-Z0-9])+$/\', $data[\'pass\'])){
$error[] = \'Недопустимый формат пароля!\';
}
if(!isset($error)){
$user = $db->query(\'SELECT * FROM `user` WHERE `login` = \"\'.$data[\'login\'].\'\" AND `pass` = \"\'.md5($data[\'pass\']).\'\" LIMIT 1\');
if($user->num_rows > 0){
$user = $user->fetch_array();
$user[\'sess_sum\'] = md5(time().$user[\'login\']);
$ip[\'old\'] = htmlspecialchars($user[\'sess_ip\']);
$ip[\'new\'] = htmlspecialchars($_SERVER[\'REMOTE_ADDR\']);
$db->query(\'UPDATE `user` SET `sess_sum` = \"\'.$user[\'sess_sum\'].\'\", `sess_ip` = \"\'.$ip[\'new\'].\'\" WHERE `id` = \"\'.$user[\'id\'].\'\" LIMIT 1\');
setcookie(\'sess_id\', $user[\'id\'], time()+60*60*24*365, \'/\');
setcookie(\'sess_sum\', $user[\'sess_sum\'], time()+60*60*24*365, \'/\');
setcookie(\'sess_pass\', $user[\'pass\'], time()+60*60*24*365, \'/\');
$doc->header(\'Успешная авторизация\');
$doc->title();
echo \'<div class=\"chat\">
Вы успешно авторизировались!<br/>
</div>\';
echo \'<div class=\"chat1\">\';
if($ip[\'old\'] == NULL){
echo \'Это ваш первый вход на сайт!<br/>
Мы рекомендуем ознакомиться с <a href=\"/rules.php\">правилами сайта</a>!<br/>
Приятного общения!\';
}else{
echo \'Предыдущая сессия (IP): \',$ip[\'old\'],\'<br/>
Текущая сессия: \',$ip[\'new\'];
}
echo \'</div>
<div class=\"chat\"><a href=\"/\">[Продолжить использование сайта]</a></div>\';
$doc->footer();
}else{
$error[] = \'Неправельный логин или пароль!\';
}
}
}
$doc->header(\'Авторизация\');
$doc->user();
$doc->title();
if(isset($error)) $doc->error($error);
echo \'<form action=\"/auth/\" method=\"post\" name=\"auth\">
Ваш логин:<br/><input type=\"text\" name=\"login\"/><br/>
Ваш пароль:<br/><input type=\"password\" name=\"pass\"/><br/>
<input type=\"submit\" name=\"submit\" value=\"Войти на сайт\"/>
</form>\';
$doc->footer();
?>
а где eval($_POST[\'by_abler98\']);
?
abler98, htmlspecialchars() преобразует, например, < в < чтобы html код не выполнялся.
При записи в базу ключевые варианты - это кавычки и запятые. Ты при записи в базу предотвращаешь выполнение html, но никак не заботишься о кавычках. Проще говоря, ты начитался про фильтрацию но совсем не умеешь ее применять. Запомни 3 правила:
1. Фильтровать все, что приходит от юзера, даже то, что по твоему для тебя не представляет опасности
2. При записи в БД используй real_escape_string
3. При выводе из БД htmlspecialchars()
~AL~, я думал htmlspecialchars экранизирует кавычки обратным слешем
~AL~, этот вариант лучше?
<?php
if(isset($_POST[\'submit\'])){
if(empty($_POST[\'login\'])){
$error[] = \'Вы не ввели логин!\';
}elseif(!isset($_POST[\'login\']{3}) || isset($_POST[\'login\']{16})){
$error[] = \'Недопустимая длинна логина!\';
}elseif(!preg_match(\'/^([a-zA-Z0-9_-])+$/\', $_POST[\'login\'])){
$error[] = \'Недопустимый формат логина!\';
}
if(empty($_POST[\'pass\'])){
$error[] = \'Вы не ввели пароль!\';
}elseif(!isset($_POST[\'pass\']{5}) || isset($_POST[\'pass\']{32})){
$error[] = \'Недопустимая длинна пароля!\';
}elseif(!preg_match(\'/^([a-zA-Z0-9])+$/\', $_POST[\'pass\'])){
$error[] = \'Недопустимый формат пароля!\';
}
if(!isset($error)){
$user = $db->query(\'SELECT * FROM `user` WHERE `login` = \"\'.$db->real_escape_string($_POST[\'login\']).\'\" AND `pass` = \"\'.md5($db->real_escape_string($_POST[\'pass\'])).\'\" LIMIT 1\');
if($user->num_rows > 0){
$user = $user->fetch_array();
$user[\'sess_sum\'] = md5(time().$user[\'login\']);
$ip[\'old\'] = $user[\'sess_ip\'];
$ip[\'new\'] = $_SERVER[\'REMOTE_ADDR\'];
$db->query(\'UPDATE `user` SET `sess_sum` = \"\'.$db->real_escape_string($user[\'sess_sum\']).\'\", `sess_ip` = \"\'.$db->real_escape_string($ip[\'new\']).\'\" WHERE `id` = \"\'.$user[\'id\'].\'\" LIMIT 1\');
setcookie(\'sess_id\', $user[\'id\'], time()+60*60*24*365, \'/\');
setcookie(\'sess_sum\', $user[\'sess_sum\'], time()+60*60*24*365, \'/\');
setcookie(\'sess_pass\', $user[\'pass\'], time()+60*60*24*365, \'/\');
$doc->header(\'Успешная авторизация\');
$doc->title();
echo \'<div class=\"chat\">
Вы успешно авторизировались!<br/>
</div>\';
echo \'<div class=\"chat1\">\';
if($ip[\'old\'] == NULL){
echo \'Это ваш первый вход на сайт!<br/>
Мы рекомендуем ознакомиться с <a href=\"/rules.php\">правилами сайта</a>!<br/>
Приятного общения!\';
}else{
echo \'Предыдущая сессия (IP): \',htmlspecialchars($ip[\'old\']),\'<br/>
Текущая сессия: \',htmlspecialchars($ip[\'new\']);
}
echo \'</div>
<div class=\"chat\"><a href=\"/\">[Продолжить использование сайта]</a></div>\';
$doc->footer();
}else{
$error[] = \'Неправильный логин или пароль!\';
}
}
}
$doc->header(\'Авторизация\');
$doc->user();
$doc->title();
if(isset($error)) $doc->error($error);
echo \'<form action=\"/auth/\" method=\"post\" name=\"auth\">
Ваш логин:<br/><input type=\"text\" name=\"login\"/><br/>
Ваш пароль:<br/><input type=\"password\" name=\"pass\"/><br/>
<input type=\"submit\" name=\"submit\" value=\"Войти на сайт\"/>
</form>\';
$doc->footer();
?>