Q_BASIC
Хранитель порядка
- Регистрация
- 30 Ноя 2013
- Сообщения
- 516
- Реакции
- 1.240
- Автор темы
- #1
$is_logged false если пользователь не авторизован.
Если пользователь авторизован, то в $is_logged все из mysql про него
site.ru?exit Это выход
в mysql столбики:
id
login
status - 0 Авторизован. 0 - не авторизован
group - 1 - посетитель. 2 - модератор. 3 - администратор
ip - две первые группы IP. Если IP пользователя 49.204.28.40 То там будет 49.204
date
password - Пароль из функции salt( $pass )
Если пользователь авторизован, то в $is_logged все из mysql про него
site.ru?exit Это выход
в mysql столбики:
id
login
status - 0 Авторизован. 0 - не авторизован
group - 1 - посетитель. 2 - модератор. 3 - администратор
ip - две первые группы IP. Если IP пользователя 49.204.28.40 То там будет 49.204
date
password - Пароль из функции salt( $pass )
PHP:
function salt( $pass ){
$salt = '12e0jasd()"#';
$hash = md5( $salt . md5( trim( $pass ) . $salt ) );
return $hash;
}
function check_captcha( $code ){
global $_SESSION;
if( $code == '' ){
return array( 'mess' => 'Введите капчу', 'code' => 0 );
}else{
$code = trim($code);
$cap = $_SESSION['captcha'];
unset( $_SESSION['captcha'] );
if ($code == $cap){
return array( 'mess' => '', 'code' => 1 );
}else{
return array( 'mess' => 'Капча введена не верно', 'code' => 0 );
}
}
}
PHP:
if( isset( $_POST['login'] ) and isset( $_POST['pass'] ) ){
if( isset( $_POST['captcha_code']) ){
$captcha =check_captcha( str_replace( 0, '', $_POST['captcha_code'] ) );
if( $captcha['code'] == 1 ){
if( $_POST['login'] !== '' ){
$data = $db->query( 'SELECT * FROM `'. PREFIX .'_users` WHERE `login`="' .htmlentities( $_POST['login'] ) .'"' );
if( $data ){
$data->setFetchMode(PDO::FETCH_ASSOC);
$data = $data->fetch();
$post_pass = salt( $_POST['pass'] );
if( html_entity_decode( $data['password'] ) == $post_pass ){
if( $data['status'] == 0 ){
SetCookie( PREFIX .'_login', $data['login'], time()+2592000, "/");
SetCookie( PREFIX .'_password', $data['password'], time()+2592000, "/");
$ip_arr = explode( '.', $_SERVER['REMOTE_ADDR'] );
$query_data = array( 'status' => 1, 'ip' => $ip_arr[0]. '.' . $ip_arr[1], 'date' => $_SERVER['REQUEST_TIME'] );
$query = $db->prepare( 'UPDATE `'. PREFIX .'_users` SET `status`=:status, `ip`=:ip, `date`=:date WHERE `login`="'. htmlentities( $_POST['login'] ) .'"' );
$query->execute( $query_data );
$is_logged = $data;
$mess = '';
$refresh = true;
}else{
$is_logged = false;
$mess = 'Пользователь уже авторизован';
}
}else{
$is_logged = false;
$mess = 'Логин или пароль не верный';
}
}else{
$is_logged = false;
$mess = 'Логин или пароль не верный';
}
}else{
$is_logged = false;
$mess = 'Логин не может быть пустым';
}
}else{
$is_logged = false;
$mess = $captcha['mess'];
}
}else{
$is_logged = false;
$mess = 'Введите капчу';
}
}else{
if( isset( $_COOKIE[PREFIX .'_login'] ) and isset( $_COOKIE[PREFIX .'_password'] ) ){
if( $_COOKIE[PREFIX .'_login'] !== '' ){
$data = $db->query( 'SELECT * FROM '. PREFIX .'_users WHERE `login`="' . htmlentities( $_COOKIE[PREFIX .'_login'] ) .'"' );
if( $data ){
$data->setFetchMode(PDO::FETCH_ASSOC);
$data = $data->fetch();
if( html_entity_decode( $data['password'] ) == $_COOKIE[PREFIX .'_password'] ){
$ip_arr = explode( '.', $_SERVER['REMOTE_ADDR'] );
if( $data['status'] == 1 ){
if( $data['ip'] == $ip_arr[0]. '.' . $ip_arr[1]){
$is_logged = $data;
$mess = '';
}else{
$is_logged = false;
$mess = 'У вас сменился IP адрес';
$query_data = array( 'status' => 0, 'ip' => '' );
$query = $db->prepare( 'UPDATE `'. PREFIX .'_users` SET `status`=:status, `ip`=:ip' );
$query->execute( $query_data );
}
}else{
$is_logged = false;
$mess = 'Записи о вашей авторизации нет в системе';
SetCookie( PREFIX .'_login', '', time()+1, "/");
SetCookie( PREFIX .'_password', '', time()+1, "/");
}
}else{
$is_logged = false;
$mess = '';
}
}else{
$is_logged = false;
$mess = 'Логин или пароль не верный';
}
}else{
$is_logged = false;
$mess = '';
}
}else{
$is_logged = false;
$mess = '';
}
}
if( isset( $_GET['exit'] ) and $is_logged ){
SetCookie( PREFIX .'_login', '', time()+1, "/");
SetCookie( PREFIX .'_password', '', time()+1, "/");
$query_data = array( 'status' => 0, 'ip' => '' );
$query = $db->prepare( 'UPDATE `'. PREFIX .'_users` SET `status`=:status, `ip`=:ip WHERE `id`="'. $is_logged['id'] .'"' );
$query->execute( $query_data );
$is_logged = false;
$mess = '';
}