View file forum/ajax/logins.php

File size: 4.42Kb
<?php
require('../flowap/system.php');
switch ($act) {
	case 'auts':
		$email = functions::htmlred($_POST['email']);
		$captcha = functions::htmlred($_POST['captcha']);
		// капча
		if (empty($captcha) || mb_strlen($captcha) < 2 || mb_strlen($captcha) > 8):
			$err = 'Код с картинки введен не правильно.';
		elseif ($_SESSION['captcha1'] != $captcha):
			$err = 'Код с картинки введен не правильно.';
		endif;
		// email
		if (empty($email) || mb_strlen($email) < 5 || mb_strlen($email) > 100):
			$err = 'Не правильная длина Email.';
		elseif (filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE):
			$err = 'Email указан не верно.';
		endif;
		//
		if(isset($err)):
			$d = ['message' => $err,'type' => 'error'];
			echo json_encode($d); exit;
		else:
			$code = mt_rand(199999,999999999);
			/// Отправка письма
			functions::mailto(
				$email,
				'⚡️ Авторизация на StrongCMS',
				'Спасибо что решили зайти на StrongCMS<br/>
				Вы собираетесь авторизоваться на проекте!<br/>
				Код для авторизации: '.$code.'<br/>
				Если вы не понимаете о чем идет речь, проигнарируйте данное письмо.',
				'admin@strongcms.ru'
			);
			///
			$zamena = '<form id="ajax_form" class="_dop33fw3r2e23r" action="" onsubmit="return false;"><input type="number" maxlength="5" name="codes" value="" class="_dop34t5geefgf" autofocus="true" style="padding-right: 0;" placeholder="Код из письма"><input onclick=\'saveaj ("/ajax/logins.php?act=vhodes");return false;\' type="submit" name="add" class="_dop34tgweef" value="Авторизация"></form>';
			$_SESSION['good'] = 'Код отправлен к вам на почту.';
			DB::$dbs->query('INSERT INTO `logaut` SET `email` = ?, `code` = ?',[$email,$code]);
			$idl = DB::$dbs->lastInsertId();
			$_SESSION['emailok'] = $idl;
			$d = ['zamena' => $zamena, 'type' => 'zamena'];
			echo json_encode($d); exit;
		endif;
	break;
	case 'vhodes':
		if(empty($_SESSION['emailok'])):
			$_SESSION['good'] = 'Ошибка авторизации #1.';
			$d = ['location' => '/','type' => 'success'];
			echo json_encode($d); exit;
		endif;
		$str = DB::$dbs->queryFetch('SELECT `code`,`email`,`id` FROM `logaut` WHERE `id` = ? LIMIT 1', [functions::htmlred($_SESSION['emailok'])]);
		if(empty($str['id'])):
			unset($_SESSION['emailok']);
			$_SESSION['good'] = 'Ошибка авторизации #2.';
			$d = ['location' => '/','type' => 'success'];
			echo json_encode($d); exit;
		endif;
		$codes = functions::htmlred($_POST['codes']);
		if($str['code'] == $codes):
			$ips = functions::htmlred($_SERVER['REMOTE_ADDR']);
			if(DB::$dbs->querySingle('SELECT COUNT(`id`) FROM `user` WHERE `email` = ?', [$str['email']]) > 0): // такой есть
				$token = password_hash(time().$codes, PASSWORD_DEFAULT);
				DB::$dbs->query('UPDATE `user` SET `token` = ? WHERE `email` = ? LIMIT 1', [$token,$str['email']]);
				setcookie('token', $token, time()+60*60*24*7, '/');
				DB::$dbs->query('DELETE FROM `goust` WHERE `ip` = ?',[$ips]);
				DB::$dbs->query('DELETE FROM `logaut` WHERE `id` = ?',[$str['id']]);
				unset($_SESSION['emailok']);
				$_SESSION['good'] = 'Авторизация успешна.';
				$d = ['location' => '/','type' => 'success'];
				echo json_encode($d); exit;
			else: // такого нет 
				$token = password_hash(time().$codes, PASSWORD_DEFAULT);
				DB::$dbs->query('INSERT INTO `user` SET `email` = ?, `token` = ?',[$str['email'],$token]);
				$idl = DB::$dbs->lastInsertId();
				DB::$dbs->query('UPDATE `user` SET `nick` = ? WHERE `id` = ? LIMIT 1', ['id'.$idl,$idl]);
				setcookie('token', $token, time()+60*60*24*7, '/');
				DB::$dbs->query('DELETE FROM `goust` WHERE `ip` = ?',[$ips]);
				DB::$dbs->query('DELETE FROM `logaut` WHERE `id` = ?',[$str['id']]);
				unset($_SESSION['emailok']);
				$_SESSION['good'] = 'Авторизация успешна.';
				$d = ['location' => '/','type' => 'success'];
				echo json_encode($d); exit;
			endif;
		else:
			DB::$dbs->query('UPDATE `logaut` SET `pop` = `pop` + 1 WHERE `id` = ?',[$str['id']]);
			$d = ['message' => 'Код введен не верно.','type' => 'error'];
			echo json_encode($d); exit;
		endif;
	break;
}
?>