mysqli_query($link, "UPDATE R_Users SET ".$insip." WHERE user_id='".$data['user_id']."'"); mysqli_query($link, "UPDATE R_Users SET user_hash=".$hash." WHERE user_id='".$data['user_id']."'");
if (isset($_COOKIE['id']) and isset($_COOKIE['hash']))
{
$query = mysqli_query($link, "SELECT *, INET_NTOA(user_ip) AS user_ip FROM R_Users WHERE user_id = ".intval($_COOKIE['id'])." LIMIT 1");
$userdata = mysqli_fetch_assoc($query);
if(($userdata['user_hash'] !== $_COOKIE['hash']) or ($userdata['user_id'] !== $_COOKIE['id']) or (($userdata['user_ip'] !== $_SERVER['REMOTE_ADDR']) and ($userdata['user_ip'] !== "0")))
{
setcookie("id", 1, time()+3600*10, "/");
setcookie("hash", 1, time()+3600*10, "/");
print "Хм, что-то не получилось";
}
else
{
print "Привет, ".$userdata['user_login'].". Всё работает!";
Login.php
<?
// Страница авторизации
include 'Connection.php'; // подключаем скрипт
# Функция для генерации случайной строки
function generateCode($length=6) {
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPRQSTUVWXYZ0123456789";
$code = "";
$clen = strlen($chars) - 1;
while (strlen($code) < $length) {
$code .= $chars[mt_rand(0,$clen)];
}
return $code;
}
// выполняем операции с базой данных
$query ="SELECT * FROM R_Users";
$result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link));
if(isset($_POST['submit']))
{
# Вытаскиваем из БД запись, у которой логин равняеться введенному
$query = mysqli_query($link, "SELECT user_id, user_password FROM R_Users WHERE user_login='".mysqli_real_escape_string($link, $_POST['login'])."'");
$data = mysqli_fetch_assoc($query);
# Соавниваем пароли
if($data['user_password'] == md5(md5($_POST['password'])))
{
# Генерируем случайное число и шифруем его
$hash = md5(generateCode()); //не работает генератор значений!!!
if(!@$_POST['ip'])
{
# Если пользователя выбрал привязку к IP
# Переводим IP в строку
$insip = "user_ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."')";
}
# Записываем в БД новый хеш авторизации и IP
mysqli_query($link, "UPDATE R_Users SET ".$insip." WHERE user_id='".$data['user_id']."'");
mysqli_query($link, "UPDATE R_Users SET user_hash=".$hash." WHERE user_id='".$data['user_id']."'");
# Ставим куки
setcookie("id", $data['user_id'], time()+60*60*24*30);
setcookie("hash", $hash, time()+60*60*24*30);
# Переадресовываем браузер на страницу проверки нашего скрипта
header("Location: check.php"); exit();
}
else
{
print "Вы ввели неправильный логин/пароль";
}
}
?>
Логин
Пароль
Не прикреплять к IP(не безопасно)
--------------------------------------------------------------------------------------------------------------------------
Check.php
<?
// Скрипт проверки
# Соединямся с БД
include 'Connection.php';
include 'Login.php';
if (isset($_COOKIE['id']) and isset($_COOKIE['hash']))
{
$query = mysqli_query($link, "SELECT *, INET_NTOA(user_ip) AS user_ip FROM R_Users WHERE user_id = ".intval($_COOKIE['id'])." LIMIT 1");
$userdata = mysqli_fetch_assoc($query);
if(($userdata['user_hash'] !== $_COOKIE['hash']) or ($userdata['user_id'] !== $_COOKIE['id']) or (($userdata['user_ip'] !== $_SERVER['REMOTE_ADDR']) and ($userdata['user_ip'] !== "0")))
{
setcookie("id", 1, time()+3600*10, "/");
setcookie("hash", 1, time()+3600*10, "/");
print "Хм, что-то не получилось";
}
else
{
print "Привет, ".$userdata['user_login'].". Всё работает!";
}
}
else
{
print "Включите куки";
}
?>