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
Форумы портала PHP.SU :: Версия для печати :: Всё позабыл. MySQL
Форумы портала PHP.SU » » Работа с СУБД » Всё позабыл. MySQL

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

1. improbable - 25 Ноября, 2012 - 13:09:58 - перейти к сообщению
Есть скрипт проверки на авторизацию. Работает хорошо.

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.  


но это не рационально
2. 3d_killer - 25 Ноября, 2012 - 13:16:25 - перейти к сообщению
почему?
3. OrmaJever - 25 Ноября, 2012 - 13:17:44 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. if(mysql_fetch_object($query)->baned) echo 'забанен';
  2. else {
  3.  // действия после авторизации
  4. }
4. EuGen - 25 Ноября, 2012 - 13:18:14 - перейти к сообщению
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. }
5. improbable - 25 Ноября, 2012 - 13:22:56 - перейти к сообщению
Всем спасибо за оперативную помощь! Улыбка

 

Powered by ExBB FM 1.0 RC1