Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

"IP" записывает в SQL, а "HASH" не записывает. И всегда пишет ХМ, что то не получилось

Dragon_ Live Профи (813), на голосовании 4 года назад
---------------------------------------------------------------------------------------------------------------------------
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 "Включите куки";

}

?>
Голосование за лучший ответ
serd Просветленный (20236) 4 года назад
перед новым запросом надо очистить предыдущий. Читай про mysqli_free_result
Похожие вопросы