Свернутый текст
define('INSIDE_ENTER_COW_49618537435576248293', true);
define('INSIDE_NO_TEST_USER_COW_584268941994126592', true);
include(getcwd().'/inc/db_connect.php');
include(getcwd().'/time.php');
mysql_query("SET CHARSET cp1251");
if (strlen($user) >= 45) {
$title = 'Ошибка!';
include("inc/html_header.php");
echo"<body bgcolor=EBEDEC><b><font color=red>Ошибка!</font></b><br>Что-то тут не так...";
exit;
}
$ctime = time();
$error = '';
$ip = $_SERVER['REMOTE_ADDR'];
$browser = GetEnv(HTTP_USER_AGENT);
// Восстановление забытого пароля
if ($_GET['lostpwd']){ include(getcwd().'/inc/enter/lostpwd.php'); }
else {
$user = mysql_escape_string($_POST['user']);
$pass = mysql_escape_string($_POST['pass']);
$infs = mysql_query("select id, user, pass, room from players where user='$user'");//изменил Кузнецов С.А. 2008-02-22
$info = mysql_fetch_array($infs);
// Перса нет, ищем в других городах
if (mysql_num_rows($infs)==0) $error="Логин \"<b>".$user."</b>\" не найден в базе!";
else {
if (empty($user) || empty($pass)){
$error = "Неверный запрос!";
}
//изменил Кузнецов С.А. 2008-03-01
elseif ($info['pass']!=cryptpassdb($pass_ck,$info['id']) && !empty($info['user'])) {
$error = "Неверный пароль для \"<b>".$user."</b>\"";
mysql_query("INSERT INTO security (id, user, ip, result) values('$ctime', '$user', '$ip', '2')");
// insert_msg("Была предпринята неудачная попытка логина с IP: <b>$ip</b>","$info[user]",4,"","$info[room]","1");
}
if ($inf['bloked']){
$error = "Персонаж <b>\"".$inf['user']."\"</b> заблокирован!<br>Причина блокировки: <font color=red><b>".$inf['bloked']."</b></font>";
}
}
if(empty($error)) {
$auth_code=md5($ctime-rand(1,1000));
SetCookie("user", $inf['user']);
SetCookie("pass", $pass_ck);//изменил Кузнецов С.А. 2008-03-01
SetCookie("db_auth", $auth_code);
SetCookie("db_user_id", $inf['id']);
mysql_query("LOCK TABLE authorization WRITE");
mysql_query("DELETE FROM `authorization` WHERE id='".$inf['id']."'");
mysql_query("INSERT INTO `authorization` VALUES('".$inf['id']."','".$auth_code."')");
mysql_query("UNLOCK TABLES");
// Заносим в список онлайн
if (mysql_num_rows(mysql_query("SELECT * FROM online WHERE id='".$inf['id']."'")) == 1)
mysql_query("UPDATE online SET level='".$inf['level']."', rank='".$inf['rank']."', tribe='".$inf['tribe']."', room='".$inf['room']."', lpv='".$ctime."' WHERE id='".$inf['id']."'");
else
mysql_query("INSERT INTO online values ('".$inf['id']."','".$inf['user']."','".$inf['level']."','".$inf['rank']."','".$inf['tribe']."','".$ctime."','".$inf['room']."')");
//
mysql_query("INSERT INTO security (id, user, ip, result) values('".$ctime."', '".$info['user']."','$ip','1')");
mysql_query("UPDATE `players` SET `lpv`='".time()."' WHERE `id` = '".$inf['id']."'");
header("Location: game.php");
} else { ?>
<title>Ошибка!</title><link rel=stylesheet type='text/css' href='<? echo $img_server; ?>/i/main.css'>
<body bgcolor=EBEDEC>
<font color=red><b>Ошибка:</b></font><br><?=$error?>
<? }
}
Спустя 2 минуты, 48 секунд (22.03.2010 - 22:45) sergeiss написал(а):
Лучше все-таки код так разместить, а не в виде файла.
Спустя 1 минута, 5 секунд (22.03.2010 - 22:46) DestWhite написал(а):
Да так намного лучше спасибо
Спустя 31 минута, 35 секунд (22.03.2010 - 23:17) sergeiss написал(а):
Прокомментируй подробнее, что же тут получается, а что - не получается.
Спустя 2 минуты, 50 секунд (22.03.2010 - 23:20) DestWhite написал(а):
Значит так: когда при регистрации персонажа ввожу логин, пароль, пишет регистрация прошла успешно зайдите с главной страницы.
Вот, что получаеться: когда я ввожу логин( который регестрировал) и пароль( который ставил при регистрации) нажимаю ентер, мне пишет неправельный пароль для персонажа DestWhite( пример ника)
Подскажите что не так в коде, что выдаёт такую ошибку?
Из-за чего не принимаеться пароль который прописываеться при регистрации
Вот, что получаеться: когда я ввожу логин( который регестрировал) и пароль( который ставил при регистрации) нажимаю ентер, мне пишет неправельный пароль для персонажа DestWhite( пример ника)
Подскажите что не так в коде, что выдаёт такую ошибку?
Из-за чего не принимаеться пароль который прописываеться при регистрации
Спустя 20 минут, 9 секунд (22.03.2010 - 23:40) sergeiss написал(а):
Я не совсем понял логику вот этого куска:
Цитата (DestWhite @ 22.03.2010 - 23:42) |
if (empty($user) || empty($pass)){ $error = "Неверный запрос!"; } //изменил Кузнецов С.А. 2008-03-01 elseif ($info['pass']!=cryptpassdb($pass_ck,$info['id']) && !empty($info['user'])) { $error = "Неверный пароль для \"<b>".$user."</b>\""; mysql_query("INSERT INTO security (id, user, ip, result) values('$ctime', '$user', '$ip', '2')"); //insert_msg("Была предпринята неудачная попытка логина с IP: <b>$ip</b>","$info[user]",4,"","$info[room]","1"); } if ($inf['bloked']){ $error = "Персонаж <b>\"".$inf['user']."\"</b> заблокирован!<br>Причина блокировки: <font color=red><b>".$inf['bloked']."</b></font>"; } } |
Во-первых, сначала ты проверяешь, что у тебя уже есть результат (больше нуля строк в выборке), а затем проверяешь, нет ли пустоты в имени или пароле. И если где-то пусто, то говоришь, что запрос неверный. Но попасть сюда, в это место, можно только в случае, если запрос был верный. Это как вообще????
Далее. Что за функция cryptpassdb(), что за переменная $pass_ck? И $info['user'] не может быть пустым (empty)... Потому что иначе запрос не даст результата! Потому что в запросе будет условие на пустоту логина. Поэтому условие !empty($info['user']) в данном месте всегда должно быть верным.
И откуда появились $inf['bloked'] и $inf['user']? Их тут не было...
Одни вопросы от этого блока кода!!! Подумай над ними.