Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Всё позабыл. MySQL

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
improbable
Отправлено: 25 Ноября, 2012 - 13:09:58
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Есть скрипт проверки на авторизацию. Работает хорошо.

PHP:
скопировать код в буфер обмена
  1.  
  2.   <?PHP
  3.   require_once('recaptchalib.php');
  4.   $privatekey = "6LdEidkSAAAAAO2B4Ygfgyg6UJrLIFEohAHXa2oo";
  5.   $resp = recaptcha_check_answer ($privatekey,
  6.                                 $_SERVER["REMOTE_ADDR"],
  7.                                 $_POST["recaptcha_challenge_field"],
  8.                                 $_POST["recaptcha_response_field"]);
  9.  
  10.   if (!$resp->is_valid) {
  11.     // What happens when the CAPTCHA was entered incorrectly
  12.     die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
  13.          "(reCAPTCHA said: " . $resp->error . ")");
  14.   } else {
  15.         $hash=$_POST['hash'];if($hash!=(md5('Salt'.$_SERVER['REMOTE_ADDR']))){die('Система безопасности выявила проблему');}
  16.     $pass=(mysql_escape_string((md5('Salt'.$_POST['password']))));$uname=(mysql_escape_string($_POST['username']));
  17.         $configrequired='1';include'configuration.php';
  18.         mysql_connect($config['dbhost'],$config['dbuname'],$config['dbpass']) or die('Подключение к базе данных не удалось');
  19.         mysql_select_db($config['dbname']) or die(mysql_error());
  20.         $query=mysql_query("SELECT * FROM `users` WHERE `username` = '$uname' AND `password` = '$pass'");
  21.         if((mysql_num_rows($query))=='1'){
  22.        
  23. // Действие после авторизации
  24.        
  25.         }else{die('Имя и/или пароль были введены неверно!');}
  26.         mysql_close();
  27.         }
  28.   ?>
  29.  


Так вот, мне надо, чтобы там, где сейчас "Действие после авторизации" была проверка на заблокирован/не заблокирован ли аккаунт. Для этого есть поле в БД (в той же строке, где и пароль с логином), под названием `banned`. Если забанен, то оно равно 1, если нет, то нулю.

Т.е. после авторизации должна идти проверка значения `banned` из БД.
Можно сделать через

PHP:
скопировать код в буфер обмена
  1.  
  2. mysql_query("SELECT * FROM `users` WHERE `username` = '$uname' AND `password` = '$pass' AND `banned` = '0'");
  3.  


но это не рационально

(Отредактировано автором: 25 Ноября, 2012 - 13:10:22)

 
 Top
3d_killer
Отправлено: 25 Ноября, 2012 - 13:16:25
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




почему?
 
My status
 Top
OrmaJever Модератор
Отправлено: 25 Ноября, 2012 - 13:17:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




PHP:
скопировать код в буфер обмена
  1. if(mysql_fetch_object($query)->baned) echo 'забанен';
  2. else {
  3.  // действия после авторизации
  4. }


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
EuGen Администратор
Отправлено: 25 Ноября, 2012 - 13:18:14
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




improbable пишет:
$query=mysql_query("SELECT * FROM `users` WHERE `username` = '$uname' AND `password` = '$pass'");

Если Вы и так выбираете все поля, то что мешает после применения mysql_fetch_array обратиться к нужному полю?
"Сэкономить" можно еще и так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $query=mysql_query("SELECT * FROM `users` WHERE `username` = '$uname' AND `password` = '$pass'");
  3. if($rgData = mysql_fetch_array($query))
  4. {
  5.    if($rgData['banned'])
  6.    {
  7.       //забанен
  8.    }      
  9.    else
  10.    {
  11.       // Действие после авторизации
  12.    }
  13. }


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
improbable
Отправлено: 25 Ноября, 2012 - 13:22:56
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




Всем спасибо за оперативную помощь! Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB