Это скрипт логина. Модуль auth - авторизация.
<?php
include("auth.php");
if (auth() == 1)
{
$error = new Error("вы уже авторизованны", __LINE__, __FILE__, __FUNCTION__);
$error->printText();
}
else
{
$login = "";
$pasword1 = "";
$password2 = "";
$current_time = date('Y-m-d H:i:s');
$link = mysql_connect("замена", "замена", "замена") or die("Connection failed");
mysql_set_charset("utf8") or die();
mysql_select_db("замена") or die();
if ((!empty($_POST['login'])) && (!empty($_POST['password'])))
{
$login = filterSql($_POST['login']);
$password1 = md5(filterSql($_POST['password']));
$result = mysql_query("SELECT password FROM users WHERE login = '$login'", $link);
if ($result == false)
{
$error = new Error(mysql_errno().": ".mysql_error(), __LINE__, __FILE__, __FUNCTION__);
}
else
{
if ($line = mysql_fetch_array($result, MYSQL_NUM))
{
$password2 = $line[0];
if ($password2 == $password1)
{
$res = mysql_query("SELECT inchat FROM user_list WHERE nickname = '$login'", $link);
if ($res == false)
{
$error = new Error(mysql_errno().": ".mysql_error(), __LINE__, __FILE__, __FUNCTION__);
}
else
{
$line = mysql_fetch_array($res, MYSQL_NUM);
if ($line == false)
{
$query_result = mysql_query("INSERT INTO user_list (nickname, inchat, last_updated) VALUES('$login', 1, '$current_time');", $link);
if ($query_result == false)
{
$error = new Error(mysql_errno().": ".mysql_error(), __LINE__, __FILE__, __FUNCTION__);
};
}
else
{
if ($line[0] == 0)
{
$query_result = mysql_query("UPDATE user_list SET inchat=1, last_updated='$current_time', WHERE nickname='$login';", $link);
if ($query_result == false)
{
$error = new Error(mysql_errno().": ".mysql_error(), __LINE__, __FILE__, __FUNCTION__);
};
}
else
{
$error = new Error("пользователь с таким логином уже находится сейчас в чате", __LINE__, __FILE__, __FUNCTION__);
//$error->printText();
//exit();
};
};
echo mysql_get_host_info();
$_SESSION['login'] = $login;
$a1 = filterSql($_SERVER['REMOTE_ADDR']);
$a2 = filterSql($_SERVER['REMOTE_HOST']);
$a3 = filterSql($_SERVER['REMOTE_PORT']);
$a4 = filterSql($_SERVER['HTTP_USER_AGENT']);
$a5 = filterSql($_SERVER['HTTP_REFERER']);
$query_result = mysql_query("UPDATE user_list
SET remote_addr='$a1',
remote_host='$a2',
remote_port='$a3',
http_user_agent='$a4',
http_referer='$a5'
WHERE nickname='$login';", $link);
if ($query_result == false)
{
$error = new Error(mysql_errno().": ".mysql_error(), __LINE__, __FILE__, __FUNCTION__);
};
//ini_set("session.gc_maxlifetime", 7);
echo "осуществлен вход";
};
}
else
{
$error = new Error("неправильно введён пароль", __LINE__, __FILE__, __FUNCTION__);
$error->printText();
};
}
else
{
$error = new Error("введенного логина не существует", __LINE__, __FILE__, __FUNCTION__);
$error->printText();
};
};
}
else
{
$error = new Error("логин или пароль не введены", __LINE__, __FILE__, __FUNCTION__);
$error->printText();
};
mysql_close($link);
};
?>
Выдается ошибка (почему-то соединение перестает работать, $link становится недействительной):
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE nickname='ppp'' at line 1', '61', '....../www/home/site.......' at line 1
Warning: mysql_get_host_info() [function.mysql-get-host-info]: Access denied for user 'apache'@'localhost' (using password: NO) in /....../www/home/site......./login.php on line 71
Warning: mysql_get_host_info() [function.mysql-get-host-info]: A link to the server could not be established in /....../www/home/site.......login.php on line 71
Warning: mysql_query(): 7 is not a valid MySQL-Link resource in /....../www/home/site......./login.php on line 84
Attention!You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'apache'@'localhost' (using password: NO)', '87', '/....../www/home/site.......' at line 1осуществлен вход
Warning: mysql_close(): 7 is not a valid MySQL-Link resource in /....../www/home/site......./login.php on line 112
В тексте ошибок пути заменил.
Спустя 19 минут, 28 секунд (10.01.2011 - 18:24) hellmin написал(а):
А в таблице user_list точно есть поле nickname ?
Спустя 3 минуты, 33 секунды (10.01.2011 - 18:28) Игорь_Vasinsky написал(а):
у тя вот такие моменты во первых
синтаксис акой
такое встречается не раз.
и не нравится - nickname...
("INSERT INTO user_list (nickname, inchat, last_updated) VALUES('$login', 1, '$current_time');", $link);
синтаксис акой
("INSERT INTO user_list (nickname, inchat, last_updated) VALUES('".$login."', 1, '".$current_time."');", $link);
такое встречается не раз.
и не нравится - nickname...
Спустя 3 часа, 20 минут, 21 секунда (10.01.2011 - 21:48) program90 написал(а):
Игорь_Vasinsky
Хм. А какая разница между тем включать переменную в текст или не включать? Просто вроде бы это одно и то же. Хотя теперь не знаю.)
И что именно с переменной nickname, т.е. это зарезервированное слово или что именно в ней плохо?
hellmin
Да, там это поле точно есть.
Хм. А какая разница между тем включать переменную в текст или не включать? Просто вроде бы это одно и то же. Хотя теперь не знаю.)
И что именно с переменной nickname, т.е. это зарезервированное слово или что именно в ней плохо?
hellmin
Да, там это поле точно есть.
Спустя 39 минут, 28 секунд (10.01.2011 - 22:28) Игорь_Vasinsky написал(а):
мускул говорит что в твоём коде недопустимый синтксис.
поэтому я и говорю:
и ты не в текст вставляешь - а в SQL запрос, для этого и существует синтаксис.
'WHERE nickname='ppp''
поэтому я и говорю:
$query_result = mysql_query("UPDATE user_list SET inchat=1, last_updated='".$current_time."', WHERE nickname='".$login."';", $link);либо
$query_result = mysql_query("UPDATE user_list SET inchat=1, last_updated={$current_time}, WHERE nickname={$login};", $link);
и ты не в текст вставляешь - а в SQL запрос, для этого и существует синтаксис.
Спустя 1 час, 58 минут, 10 секунд (11.01.2011 - 00:26) program90 написал(а):
Нашел ошибку
Лишняя запятая перед WHERE
Обманула со строкой - думал это 84, а оказывается это 64.
$query_result = mysql_query("UPDATE user_list SET inchat=1, last_updated='$current_time', WHERE nickname='$login';", $link);
Лишняя запятая перед WHERE
Обманула со строкой - думал это 84, а оказывается это 64.