в таблице users(id,email,password,logged)
данные:
1|myemail@gmail.com|123|0
хочу залогиниться, в классе User это так выглядит:
class User {
public $psw;
public $email;
// Функция залогинивания
public function logged_in()
{
$sql = "UPDATE users SET logged=1 WHERE (email='$this->email') AND (password='$this->psw') AND (logged=0)";
$query = mysql_query($sql);
if (!$query)
{
die("log in error: ". mysql_error());
return FALSE;
}
else
{
return TRUE;
}
}
}
в итоге используя эту функцию:
// получим
$user = new User();
$user->email=$_POST['email'];
$user->psw=$_POST['pass'];
if ($user->logged_in()){
echo "Вы вошли";
}
else
{
echo "Проверьте ваш пароль и email, они не совпадают";
}
у меня логинит все что хочешь (все подряд), наверное где-то я ошибся в самой функции logged_in(), не подскажите в чем может быть причина?
Спустя 30 минут, 35 секунд (2.04.2012 - 18:48) Placido написал(а):
Потому что mysql_query('UPDATE ...') возвращает true, даже если ни одна запись не была обновлена. Для UPDATE нужно использовать mysql_affected_rows(): если > 0, значит, что-то было обновлено.
Спустя 19 минут, 40 секунд (2.04.2012 - 19:08) johniek_comp написал(а):
метод logged_in натолкнул меня на мысль что это кохана, если это так то бросайте кохану, рано пока
Спустя 3 минуты, 42 секунды (2.04.2012 - 19:11) Stasonix написал(а):
нет, это уже ни kohana, просто по старой памяти первое что пришло в голову именно так и назвать этот метод, а фреймворк пока оставил, дей-но рановато, кстати так учудил:
вполне сносно вышло. Спасибо!
// Функция залогинивания
public function logged_in()
{
$sql = "UPDATE users SET logged=1 WHERE (email='$this->email') AND (password='$this->psw') AND (logged=0)";
$query = mysql_query($sql);
if (!mysql_affected_rows())
{
return FALSE;
}
else
{
return TRUE;
}
}
вполне сносно вышло. Спасибо!