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 :: Создание профиля пользователя [2]

 PHP.SU

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


 Страниц (3): « 1 [2] 3 »   

> Без описания
salim
Отправлено: 27 Октября, 2011 - 19:30:23
Post Id


Новичок


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


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




Вот вам самый простой, но верный способ определения пользователя.
Даю код из своей CMS Улыбка

PS простите за такие большие табуляции
PSS прочитал ваше последнее сообщение, смысл поста отменяется, но пусть висит, может кому и потребуется

PHP:
скопировать код в буфер обмена
  1.  
  2. function isUser()
  3. {
  4.         global $DB, $prefix;
  5.         @include 'modules/user/conf/config.php';
  6.         if ($_COOKIE[$USR['cookie']])
  7.                 {
  8.                         $info = explode(':', base64_decode($_COOKIE[$USR['cookie']]) );
  9.                         if (count($info) == 3)
  10.                                 {
  11.                                         $sql = "SELECT * FROM {$prefix}_users WHERE id='$info[0]' AND user_name='$info[1]' AND user_pwd='$info[2]'";
  12.                                         $r = $DB->query($sql);
  13.                                         if (mysql_num_rows($r))
  14.                                                 {
  15.                                                                 while($USER = mysql_fetch_array($r))                                                                    {
  16.                                                                         return $USER;
  17.                                                                 }
  18.                                                 }
  19.                                         else
  20.                                                 {
  21.                                                         return false;
  22.                                                                                 }
  23.                                 }
  24.                         else
  25.                                 {
  26.                                         return false;
  27.                                 }
  28.                 }
  29.         else
  30.                 {
  31.                         return false;
  32.                 }
  33. }
  34.  

(Отредактировано автором: 27 Октября, 2011 - 19:36:06)

 
 Top
Itan
Отправлено: 27 Октября, 2011 - 19:32:54
Post Id


Частый гость


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


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




Жееесть. Мне кажется, что у вас так быстро базу сольют через инъекцию. Хотя, я, может, ошибаюсь. Но я бы сделал серию проверок, перед запросом.

(Отредактировано автором: 27 Октября, 2011 - 19:33:44)

 
 Top
etoYA
Отправлено: 27 Октября, 2011 - 19:32:55
Post Id



Участник


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


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




Ну я про это же...
 
 Top
salim
Отправлено: 27 Октября, 2011 - 19:38:33
Post Id


Новичок


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


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




Itan нет у меня проверяются ВСЕ COOKIES и ВСЕ ГЕТ и ПОСТ запросты еще до подключения библиотек и выпопленеия запросов.
Ребята, я c PHP работаю 5 лет..., и уж поверьте, то что я вчера у вас зарегислся не значит, что я еще молодой
(Добавление)
Itan, etoYA пример инъекции будьте добры опираясь на мой код.
Может и правда нужно что-то изменить
 
 Top
etoYA
Отправлено: 27 Октября, 2011 - 19:41:17
Post Id



Участник


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


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




salim, не Вы не поняли, я не про иньекцию писал "И я про это же", я всего лишь новичек...
(Добавление)
И кстате, по профилю. Вот к примеру у меня есть ссылка на профиль http://mysite[dot]ru/index.php?act=profile - откроет профиль пользователя. А допустим как открыть профиль другого пользователя гет запросом? http://mysite[dot]ru/index.php?act=profile&id=1

Так правильно?

PHP:
скопировать код в буфер обмена
  1. SELECT * FROM users WHERE id='{$_SESSION['id']}' ORDER BY 'id' LIMIT 1

(Отредактировано автором: 27 Октября, 2011 - 19:55:02)

 
 Top
Itan
Отправлено: 27 Октября, 2011 - 19:58:54
Post Id


Частый гость


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


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




 
 Top
salim
Отправлено: 27 Октября, 2011 - 20:22:55
Post Id


Новичок


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


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




Itan, я не сомневаюсь в вашей осведомленности...
я не сомневаюсь что вы знаете много ссылок и знакомы с теорией хакинга...
я как-бы тоже не одну тонну подобной инфы перелопатил...

мне только интересно на что вы делали уклон когда дали мне эту ссыоку?
на присутствие "пустого логина/пароля", на наличие зашифрованных COOKIE (т.е кукисы вида admin:md5(пароль))

Не дерзю и не понтуюсь, давайте подискутируем Улыбка

Признаюсь, я вам тоже соврал
в этом месте
на самом деле запись вида
PHP:
скопировать код в буфер обмена
  1. AND user_pwd='".$MC->HashPwd($info[2])."
'
где $MC - MainClass
 
 Top
EuGen Администратор
Отправлено: 27 Октября, 2011 - 20:33:50
Post Id


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


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


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




salim, говорите 5 лет работаете, а первые же строки кода..
include внутри функции-блока, да еще и через @ или скажем нетипизированный результат функции (поясню - функция должна всегда возвращать результат строго одного типа или же null, не должно быть так, чтобы когда-то она возвращала false, когда-то массив, когда-то целое и т.п.)
В общем, это не по теме, но все же уровень знаний зависит не от (или далеко не только от) количества лет в опыте программирования

Это строго не по теме, поэтому если будет желание продолжить, лучше не здесь.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
salim
Отправлено: 27 Октября, 2011 - 20:43:56
Post Id


Новичок


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


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




EuGen объясняю (но не отмазываюсь)
CMS модульная...
да, согласен символ @ здесь не уместен... спасибо, видимо забыл убрать (ну, все бывает) можно было бы зделать

Цитата:
include внутри функции-блока
а по вашему конфиг-инклуд лучше сделать в начале библиотеки? и на кой он мне здался "поверх" всех скриптов?
PHP:
скопировать код в буфер обмена
  1. функция должна всегда возвращать результат строго одного
Вы уверены ?
моя функция возвращаем массив данных о пользователе и вы не представляете как это удобно!
PHP:
скопировать код в буфер обмена
  1. поэтому если будет желание продолжить, лучше не здесь.

Вызываете тет-а-тет? Улыбка

(Отредактировано автором: 27 Октября, 2011 - 20:46:14)

 
 Top
etoYA
Отправлено: 27 Октября, 2011 - 20:49:26
Post Id



Участник


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


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




Думаю не тет-а-тет, а просто вне этого топика)
 
 Top
EuGen Администратор
Отправлено: 27 Октября, 2011 - 20:59:58
Post Id


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


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


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




Вне топика мы можем обсудить те конкретные недостатки, которые я имел ввиду (судя по Вашему комментарию, вы пока еще не поняли сути)


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



Постоянный участник


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


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




EuGen пишет:
функция должна всегда возвращать результат строго одного типа или же null, не должно быть так, чтобы когда-то она возвращала false, когда-то массив

почему? это же удобно
 
 Top
snikers987
Отправлено: 27 Октября, 2011 - 23:00:26
Post Id



Участник


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


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




DlTA пишет:
EuGen пишет:
функция должна всегда возвращать результат строго одного типа или же null, не должно быть так, чтобы когда-то она возвращала false, когда-то массив

почему? это же удобно


чем удобно? если не понятно какое значение вернет функция, с которым дальше нужно както работать, писать кучу проверок что вернула функция, а потом только работать с результатом?

К примеру скрипт ждет что функция вернет bool , а она ему возвращает массив, это по Вашему удобно?

Поправьте если не прав. ИМХО


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
DeepVarvar Супермодератор
Отправлено: 28 Октября, 2011 - 01:03:45
Post Id



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


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


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




snikers987 пишет:
Поправьте если не прав. ИМХО

Вы арендуете вагоны.
В этот раз вы заказали 10 вагонов (array).
Вы ожидаете 10 вагонов.
Приезжает пустой тепловоз (null).

Если судить по вашему, то:
Даже если вагонов нет, всеравно должны быть вагоны.
Хоть один... Ну хоть старый и ржавый... (array).
Где их взять то? Радость Радость Радость
 
 Top
etoYA
Отправлено: 28 Октября, 2011 - 01:21:42
Post Id



Участник


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


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




Немогу понять как сделать если пользовател не авторизирован, но зашел в профиль index.php?act=profile вывод сообщения "вы не авторизированы"

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. require_once('config.php');
  4.  
  5. // Если гет существует гет запрос, то открыть профиль пользователя по ID
  6. if ($_GET['id']) {
  7.         $query = "SELECT * FROM `users` WHERE id='{$_GET['id']}' LIMIT 1";
  8. }
  9. //Иначе открыть профиль авторизованого пользователя
  10. else {
  11.         $query = "SELECT * FROM `users` WHERE id='{$_SESSION['user_id']}' LIMIT 1";
  12. }
  13. $sql = mysql_query($query) or die(mysql_error());
  14. // Если пользователь с таким айди существует, то вывести его профиль
  15. if (mysql_num_rows($sql) == 1) {
  16.         $row = mysql_fetch_array($sql);
  17.         echo $row['login'];
  18.         if (isset($_SESSION['user_id']) AND $_SESSION['user_id'] == $row['id']) {
  19.                 profile();
  20. }
  21. // Если айди гет запроса совпадает с айди сессии, то это профиль авторизованого пользователя
  22.         elseif (isset($_SESSION['user_id']) AND $_GET['id'] == $_SESSION['user_id']) {
  23.                 profile();
  24.  
  25. }
  26. }
  27. else{
  28.         echo 'Такого пользователя не сущесвтует';
  29. }
  30. // Функция редактирования персонального профила
  31. function profile() {
  32.         echo '<br/> Personal profile';
  33. }
  34. ?>
  35.  


И вообще, оцените и укажите на недостатки профиля
 
 Top
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB