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 :: Версия для печати :: проверка данных с базой
Форумы портала PHP.SU » » Вопросы новичков » проверка данных с базой

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

1. foozzi - 12 Августа, 2012 - 03:12:04 - перейти к сообщению
собственно вот функция которую я написал для проверки прав юзера, то есть если у юзера в колонке law написано admin то доступ есть, а если что то иное соответственно доступа нет, но проблема в том что доступ есть у всех, уже голову поломал...

PHP:
скопировать код в буфер обмена
  1. function check_admin() {
  2. $query = "SELECT * FROM users";
  3. $result = mysql_query($query)
  4. or die("Ошибка при работе с базой: " . mysql_error());
  5. if ($result['law'] == 'admin') {
  6.     $_SESSION['adm'] = $result['law'];
  7.     $_SESSION['adm_loggin'] = true;
  8.   }
  9. }
2. OrmaJever - 12 Августа, 2012 - 10:04:18 - перейти к сообщению
Вы же выбираете из базы всех пользователей, а проверяете только первого, а он скорее всего админ. Нужно добавить условие в запрос.
3. foozzi - 12 Августа, 2012 - 23:59:01 - перейти к сообщению
OrmaJever пишет:
Вы же выбираете из базы всех пользователей, а проверяете только первого, а он скорее всего админ. Нужно добавить условие в запрос.

как это осуществить? голову поломал уже, даже циклами пробовал
4. Green - 13 Августа, 2012 - 00:18:14 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. function check_admin()
  3. {
  4.    $query = "SELECT * FROM `users` WHERE `id` = 1";
  5.    $result = mysql_query($query) or die(mysql_error());
  6.        
  7.    if(mysql_num_rows($result) > 0)
  8.    {
  9.        $row = mysql_fetch_assoc($result);
  10.                
  11.        if($row['law'] == 'admin')
  12.        {
  13.            $_SESSION['law'] = $row['law'];
  14.            $_SESSION['adm_loggin'] = true;
  15.        }
  16.    }
  17. }

Где WHERE `id` = 1 - ваше условие. Например, подставьте туда сессию, где храниться имя пользователя, или его айди...
5. kuller - 13 Августа, 2012 - 07:28:27 - перейти к сообщению
foozzi пишет:
собственно вот функция которую я написал для проверки прав юзера, то есть если у юзера в колонке law написано admin то доступ есть, а если что то иное соответственно доступа нет, но проблема в том что доступ есть у всех, уже голову поломал...

PHP:
скопировать код в буфер обмена
  1. function check_admin() {
  2. $query = "SELECT * FROM users";
  3. $result = mysql_query($query)
  4. or die("Ошибка при работе с базой: " . mysql_error());
  5. if ($result['law'] == 'admin') {
  6.     $_SESSION['adm'] = $result['law'];
  7.     $_SESSION['adm_loggin'] = true;
  8.   }
  9. }


запрос послали, а вернуть массив зыбили, mysql_fetch_array или mysql_fetch_assoc
6. foozzi - 13 Августа, 2012 - 13:06:18 - перейти к сообщению
Green пишет:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. function check_admin()
  3. {
  4.    $query = "SELECT * FROM `users` WHERE `id` = 1";
  5.    $result = mysql_query($query) or die(mysql_error());
  6.        
  7.    if(mysql_num_rows($result) > 0)
  8.    {
  9.        $row = mysql_fetch_assoc($result);
  10.                
  11.        if($row['law'] == 'admin')
  12.        {
  13.            $_SESSION['law'] = $row['law'];
  14.            $_SESSION['adm_loggin'] = true;
  15.        }
  16.    }
  17. }

Где WHERE `id` = 1 - ваше условие. Например, подставьте туда сессию, где храниться имя пользователя, или его айди...[/quote]

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. function check_admin()
  3. {
  4.    $login_sess = $_SESSION['login'];
  5.   $query = "SELECT * FROM `users` WHERE `login` = '$login_sess'";
  6.    $result = mysql_query($query) or die(mysql_error());
  7.        
  8.    if(mysql_num_rows($result) > 0)
  9.    {
  10.        $row = mysql_fetch_assoc($result);
  11.                
  12.        if($row['law'] == 'admin')
  13.        {
  14.            $_SESSION['law'] = $row['law'];
  15.            $_SESSION['adm_loggin'] = true;
  16.        }
  17.    }
  18. }


все равно не то что надо, что я не верно делаю?
7. Stivir - 13 Августа, 2012 - 17:59:02 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. $log = $_POST["login"];
  3. $pas = $_POST["pass"];
  4.  
  5. $mdPas = md5($pas); //если пароль в мд5
  6.  
  7. $query="select login,pass,law from table WHERE login='{$log}' AND pass='{$mdPas}'";
  8. $result = mysql_query($query) or die(mysql_error());
  9. $line = mysql_fetch_row($result);
  10.  
  11. if((!strcmp($log,$line[0])) && (!strcmp($mdPas,$line[1])) && (!strcmp($line[2],'admin')))
  12. {
  13.         session_start();                                    
  14.         $_SESSION['admLog'] = $log;
  15.         $_SESSION['admPass'] = $mdPas;                    
  16.         header("Location: adminka.php");//перенаправление,напишите свой адрес              
  17.         exit;                                                
  18. }
  19.  
8. foozzi - 14 Августа, 2012 - 05:06:32 - перейти к сообщению
Stivir пишет:
PHP:
скопировать код в буфер обмена
  1.  
  2. $log = $_POST["login"];
  3. $pas = $_POST["pass"];
  4.  
  5. $mdPas = md5($pas); //если пароль в мд5
  6.  
  7. $query="select login,pass,law from table WHERE login='{$log}' AND pass='{$mdPas}'";
  8. $result = mysql_query($query) or die(mysql_error());
  9. $line = mysql_fetch_row($result);
  10.  
  11. if((!strcmp($log,$line[0])) && (!strcmp($mdPas,$line[1])) && (!strcmp($line[2],'admin')))
  12. {
  13.         session_start();                                    
  14.         $_SESSION['admLog'] = $log;
  15.         $_SESSION['admPass'] = $mdPas;                    
  16.         header("Location: adminka.php");//перенаправление,напишите свой адрес              
  17.         exit;                                                
  18. }
  19.  


сделал немного по своему, все равно пишет что у меня нет прав, хотя они есть в поле law
PHP:
скопировать код в буфер обмена
  1. function check_admin()
  2. {
  3.    $login_sess = $_SESSION['login'];
  4.    $query="select login,law from users WHERE login='{$login_sess}'";
  5.    $result = mysql_query($query) or die(mysql_error());
  6.    $line = mysql_fetch_row($result);
  7.    if((!strcmp($login_sess,$line[0])) && (!strcmp($line[1],'admin'))) {
  8.            $_SESSION['law'] = $line[1];
  9.        $_SESSION['adm_loggin'] = true;
  10.    }
  11. }
9. foozzi - 15 Августа, 2012 - 00:19:49 - перейти к сообщению
Так что править?

 

Powered by ExBB FM 1.0 RC1