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]   

> Без описания
AsmoDeyFr
Отправлено: 04 Декабря, 2012 - 18:40:55
Post Id


Новичок


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


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




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

PHP:
скопировать код в буфер обмена
  1. $sql = "SELECT COUNT(*),id,login,name FROM users WHERE login='$login' AND password ='$password'";
  2.     $result = mysql_query($sql) or die (mysql_error());
  3.         if (mysql_result($result,0)>0){
  4.         $arr = array();
  5.         while ($row=mysql_fetch_assoc($result)){
  6.           $arr[]=$row;
  7.         }
  8.         foreach ($arr as $item){
  9.                 $_SESSION['id'] = $item['id'];
  10.                 $_SESSION['login'] = $item['login'];
  11.                 $_SESSION['name'] = $item['name'];
  12.         }  
  13.         echo $_SESSION['name'];


Возвращает пустую строку.
 
 Top
KingStar
Отправлено: 04 Декабря, 2012 - 18:46:30
Post Id



Участник


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


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




бред полный написан Хм

похожее сегодня обсуждалось здесь http://forum.php.su/topic.php?fo...1&topic=8150


-----
То что программа работает, не означает что она написана правильно!
 
 Top
AsmoDeyFr
Отправлено: 04 Декабря, 2012 - 18:58:52
Post Id


Новичок


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


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




KingStar пишет:
бред полный написан Хм

похожее сегодня обсуждалось здесь http://forum.php.su/topic.php?fo...1&topic=8150


Так почему не работает то?
 
 Top
esterio
Отправлено: 04 Декабря, 2012 - 19:09:04
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




AsmoDeyFr пишет:
Так почему не работает то?

А Вы читали по ссилке на хабре как надо делать. Так как делаете Вы, как бы сказать плохо. Почему?

1.
AsmoDeyFr пишет:
$sql = "SELECT COUNT(*),id,login,name FROM users WHERE login='$login' AND password ='$password'";

Что за COUNT(*) и откуда берутся $login та $password?

2.
AsmoDeyFr пишет:
if (mysql_result($result,0)>0)

Что ето такое? такое никто не делает

3.
AsmoDeyFr пишет:
foreach ($arr as $item){
$_SESSION['id'] = $item['id'];
$_SESSION['login'] = $item['login'];
$_SESSION['name'] = $item['name'];
}

А ето вообще ***.

Посмотрите пожалуйста как делают инные, на форуме много раз обсуждалось как надо и как НЕ надо делать.
 
 Top
AsmoDeyFr
Отправлено: 04 Декабря, 2012 - 19:28:54
Post Id


Новичок


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


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




1.
AsmoDeyFr пишет:
$sql = "SELECT COUNT(*),id,login,name FROM users WHERE login='$login' AND password ='$password'";

Что за COUNT(*) и откуда берутся $login та $password?

COUNT проверяет наличие пользователя в БД, $login та $password приходят постом из формы.

2.
AsmoDeyFr пишет:
if (mysql_result($result,0)>0)

Что ето такое? такое никто не делает

Почему ни кто не делает? Классический пример из учебников и курсов,в той же статье на хабре так делают.


3.
AsmoDeyFr пишет:
foreach ($arr as $item){
$_SESSION['id'] = $item['id'];
$_SESSION['login'] = $item['login'];
$_SESSION['name'] = $item['name'];
}

А ето вообще ***.

Мне надо эти данные хранить в сесии ,а как по другому я не придумал.Как будет правильно?

Я знаю что код говно,но почему он не работает,мне интересна причина
 
 Top
nordghost
Отправлено: 04 Декабря, 2012 - 20:38:09
Post Id



Посетитель


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


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




Эм попытаюсь обяснить как я делал хотя я не гуру PHP но всё же.

На кажой странице где пользователь должен быть авторизован пишу такое:


Есть форма ввода - с неё методом пост получаю логин и пароль.
после чего делаю выборку с бд
PHP:
скопировать код в буфер обмена
  1.  
  2. $user = mysql_fetch_assoc(mysql_query("SELECT * FROM database WHERE login={$_POST['login']}"));
  3.  

после чего в переменную $user попадает либо асоцыативный массив либо ничего, если ничего то выводим типа - пользователя с таким именем не существует, если же всё таки нашёлся юзер с таким ником то проверяем
PHP:
скопировать код в буфер обмена
  1.  
  2. if($_POST['passwd']==$user['password']){
  3.  $_SESSION['auth']="authorizated";
  4.  $_SESSION['user']=$_POST['login'];
  5. }else{
  6.  echo "Пароль не верный";
  7. }
  8.  


Вот и всё после чего опять же на нужных страницах добавляю
PHP:
скопировать код в буфер обмена
  1.  
  2.   if($_SESSION['auth']=='authorizated'){
  3.  echo "Привет {$_SESSION['user']}";
  4. }
  5.  


Ну вот как то так, не судите строго писал сходу работает отлично у меня Улыбка Вобщем как то так!

Твой код воняет Евгением Поповым!

(Отредактировано автором: 04 Декабря, 2012 - 20:39:22)



-----
<a href="http://netbeans[dot]org/">Моя любимая IDE</a> :3
 
My status
 Top
esterio
Отправлено: 04 Декабря, 2012 - 21:43:59
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




AsmoDeyFr пишет:
COUNT проверяет наличие пользователя в БД, $login та $password приходят постом из формы.

А mysql_num_rows ту подходит, нет?

AsmoDeyFr пишет:
Почему ни кто не делает? Классический пример из учебников и курсов,в той же статье на хабре так делают.

где Вы там такое нашли, и что оно должно делать, типа проверка на количество возвращаемых полей?
+ ко всему, много учебников устаревшых.
Например mysql_* DEPRECATED - даже на офф сайте не рекомендуется к используванию. Пользуйтесь mysqli или pdo

AsmoDeyFr пишет:
Мне надо эти данные хранить в сесии ,а как по другому я не придумал.Как будет правильно?

в сессию да, но зачем foreach

(Отредактировано автором: 04 Декабря, 2012 - 21:51:30)

 
 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