[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Почему соединение перестает работать в середине?
program90
Подскажите, почему такой скрипт перестал работать?
Это скрипт логина. Модуль 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 написал(а):
у тя вот такие моменты во первых

("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
Да, там это поле точно есть.

Спустя 39 минут, 28 секунд (10.01.2011 - 22:28) Игорь_Vasinsky написал(а):
мускул говорит что в твоём коде недопустимый синтксис.

'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 написал(а):
Нашел ошибку
$query_result = mysql_query("UPDATE user_list SET inchat=1, last_updated='$current_time',  WHERE nickname='$login';", $link);


Лишняя запятая перед WHERE

Обманула со строкой - думал это 84, а оказывается это 64.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.