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 :: проверка данных с базой

 PHP.SU

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


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

> Без описания
foozzi
Отправлено: 12 Августа, 2012 - 03:12:04
Post Id



Посетитель


Покинул форум
Сообщений всего: 283
Дата рег-ции: Май 2011  
Откуда: rm -rf /


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




собственно вот функция которую я написал для проверки прав юзера, то есть если у юзера в колонке 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. }


-----
90% ошибок находятся в полуметре от монитора...
 
 Top
OrmaJever Модератор
Отправлено: 12 Августа, 2012 - 10:04:18
Post Id



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


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


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




Вы же выбираете из базы всех пользователей, а проверяете только первого, а он скорее всего админ. Нужно добавить условие в запрос.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
foozzi
Отправлено: 12 Августа, 2012 - 23:59:01
Post Id



Посетитель


Покинул форум
Сообщений всего: 283
Дата рег-ции: Май 2011  
Откуда: rm -rf /


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




OrmaJever пишет:
Вы же выбираете из базы всех пользователей, а проверяете только первого, а он скорее всего админ. Нужно добавить условие в запрос.

как это осуществить? голову поломал уже, даже циклами пробовал


-----
90% ошибок находятся в полуметре от монитора...
 
 Top
Green
Отправлено: 13 Августа, 2012 - 00:18:14
Post Id



Частый гость


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


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




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 - ваше условие. Например, подставьте туда сессию, где храниться имя пользователя, или его айди...

(Отредактировано автором: 13 Августа, 2012 - 00:24:05)

 
 Top
kuller
Отправлено: 13 Августа, 2012 - 07:28:27
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009  


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




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
 
 Top
foozzi
Отправлено: 13 Августа, 2012 - 13:06:18
Post Id



Посетитель


Покинул форум
Сообщений всего: 283
Дата рег-ции: Май 2011  
Откуда: rm -rf /


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




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. }


все равно не то что надо, что я не верно делаю?

(Отредактировано автором: 13 Августа, 2012 - 13:07:00)



-----
90% ошибок находятся в полуметре от монитора...
 
 Top
Stivir
Отправлено: 13 Августа, 2012 - 17:59:02
Post Id


Частый гость


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


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




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.  

(Отредактировано автором: 13 Августа, 2012 - 18:27:01)

 
 Top
foozzi
Отправлено: 14 Августа, 2012 - 05:06:32
Post Id



Посетитель


Покинул форум
Сообщений всего: 283
Дата рег-ции: Май 2011  
Откуда: rm -rf /


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




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. }


-----
90% ошибок находятся в полуметре от монитора...
 
 Top
foozzi
Отправлено: 15 Августа, 2012 - 00:19:49
Post Id



Посетитель


Покинул форум
Сообщений всего: 283
Дата рег-ции: Май 2011  
Откуда: rm -rf /


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




Так что править?


-----
90% ошибок находятся в полуметре от монитора...
 
 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