imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 13.10.2005, 13:14     # 1
vadim1k
Guest
 
Сообщения: n/a

php+mySQL Интересная задача. Как подступиться?

Поделитесь, пожалуйста, мыслями. Вроде обычный каталог продукции - прас лист из базы отображается либо целиком, либо через ввод критериев по атрибутам продукции через форму формируется выборка. Основная заморочка - есть часть продукции, цена на котрую показывается всем, а часть - только зарегистрированым пользователям. Т.е. все могут посмотреть продукцию целиком - весь список, поуточнять что-то конкретное через поиск, в "секретной" части вместо цены должна быть ссылочка на регистрацию. После авторизации зарегистрированного пользователя вместо этих ссылок должны отображаться цифры цены из базы. Я думаю, понятно объяснил. Как я себе представляю, в атрибут прайс строки в таблицу базы я должен добавить пунктик типа "секретный/несекретный" (общедоступный/доступный после регистрации). Мне явно не хватает знаний в области возможностей ПХП, я не могу себе концептуально представить себе КАК это реализовать. Перекопав кучу движков каталогов/магазинов не нашёл ни в одном реализацию такой задачи. Мне не понятно, каким образом авторизацию посредством сессий или с помощью куки приварить к эскуельному запросу. Объясните в подробностях, как идиоту, пожалуйста. Как _обычно_ такие вещи пишутся? Спасибо. Очень расчитываю на помощь.
 
Старый 13.10.2005, 13:58     # 2
Sensey
Junior Member
 
Регистрация: 25.12.2002
Сообщения: 114

Sensey Нимб уже пробиваетсяSensey Нимб уже пробивается
Пишешь функцию авторизации пользователя... например на куках....
Если посетитель сайта является пользователем - функция возвращает true, если нет - false

ну а потом в скрипте проверяешь... если true - показываешь, ес ли false - выводишь сообщение

Пишешь функцию авторизации пользователя... например на куках....
Если посетитель сайта является пользователем - функция возвращает true, если нет - false

ну а потом в скрипте проверяешь... если true - показываешь, ес ли false - выводишь сообщение
__________________
PHP+MySQL
Sensey вне форума  
Старый 13.10.2005, 14:31     # 3
vadim1k
Guest
 
Сообщения: n/a

Примерно понятно, но как должна выглядеть функция авторизации, через переменную глобальную статус посетителя передаётся или через хиден элементы или как? Во всех примерах я видел только раззрешение/запрет к просмотру _страницы_ или просмотр содержимого папки... Я наверное не очень понял концепцию сессий в пхп... Если можно подробно расскажите, пожалуйста. Или сошлите на пример с комментами или где почитать про авторизацию вообще поподробней... Я не понимаю самого механизма... Тупенький, наверное... Или ленивый. Новичёк, в общем.
 
Старый 13.10.2005, 16:01     # 4
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Задача простая и вполне стандартная.

Чтобы понять сессии, нужно просто почитать что-то толковое о них, я считаю вот это очень подходящим на это поприще.

Ну и примерчик в догонку http://php.spb.ru/php/sess.html.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 13.10.2005, 16:57     # 5
vadim1k
Guest
 
Сообщения: n/a

SNX

Спасибо, очень полезные ссылочки.
 
Старый 13.10.2005, 18:34     # 6
Sensey
Junior Member
 
Регистрация: 25.12.2002
Сообщения: 114

Sensey Нимб уже пробиваетсяSensey Нимб уже пробивается
vadim1k
На куках:
в куках хранишь логин и хешь пароля юзера

Фунция авторизации :
читает куки
проверяет есть ли такой пользователь
в зависимости от результата дает тру или фалс
__________________
PHP+MySQL
Sensey вне форума  
Старый 13.10.2005, 19:12     # 7
aoxyz_30330
Junior Member
 
Аватар для aoxyz_30330
 
Регистрация: 22.05.2004
Сообщения: 112

aoxyz_30330 Мелкий засранец
вообше все зависит от того, как работает авторизация - пишется сессия w базу, сколько действительно куки ... куча деталей ... если все по простому, то все как сказали выше ...
aoxyz_30330 вне форума  
Старый 13.10.2005, 19:33     # 8
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Sensey:
На куках:
в куках хранишь логин и хешь пароля юзера
Из "вредных" советов чтоли, как не нужно делать???
Больше идентификатора сессии, или незначащих в плане безопасности вещей (типа предпочтений пользователя) в куках ничего хранить не стоит!
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 14.10.2005, 14:51     # 9
vadim1k
Guest
 
Сообщения: n/a

Насколько я уяснил, мне можно вообще не заморачиваться, т.к. при выполнении session_register() или session_start() ПХП фактически сам всё определит -
"Алгоритм извлечения идентификатора. Из настроек сервера известно, что имя переменной, хранящей идентификатор - PHPSESSID (можно задать произвольное).
Если идентификатор будет найден в куках, то пользователь считается идентифицированным и использующи куки: повторно кука не устанавливается, URL не подвергаются автозамене (о автозамене чуть ниже).
Если идентификатор найден в URL (GET-запрос) или в POST-запросе и не найден в куках, то пользователь считается идентифицированным и не использующем куки: кука выставлятся (на всякий случай), URL проходят автозамену, чтобы вставить в них идентификатор.
Если идентификатор не найден ни в куках, ни в URL, то пользователь считается новым, используется ли он куки - не известно, происходит выделение нового случайного идетификатора и установка в куки, автозамена всех URL.
Таким образом, можно определить поведение ПХП:
При первом визите человека на ваш сайт ПХП не находит идентификатора; он устанавливает куку и производит автозамену всех URL и форм. При втором и последующем обращениях, если у человека включены куки, то ПХП будет каждый раз получать идентификатор из кук и соответветственно не будет производить повторной установки куки или автозаменять URL. Если при повторном посещении ПХП обнаружит идентификатор только в URL, то ПХП будет и далее пытаться установить куку и производить автозамену. Все это следует из приведенных выше 3-х правил." Конец цитаты.
 
Старый 15.10.2005, 12:41     # 10
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
vadim1k:
Насколько я уяснил, мне можно вообще не заморачиваться, т.к. при выполнении session_register() или session_start() ПХП фактически сам всё определит -
Да, если стоит опция session_autostart, то вообще ничего не надо в общем случае, просто работай с сессионными переменными, и все, ПХП обо всем позаботится сам в большинстве случаев. К редких когда не может, тоже описано тамже (например формирование ссылок на JavaScript с отключенными куками)
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 15.10.2005, 19:17     # 11
Sensey
Junior Member
 
Регистрация: 25.12.2002
Сообщения: 114

Sensey Нимб уже пробиваетсяSensey Нимб уже пробивается
Hubbitus
Ты где то увидел что бы я говорил про сессии?
__________________
PHP+MySQL
Sensey вне форума  
Старый 15.10.2005, 20:08     # 12
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Sensey:
Ты где то увидел что бы я говорил про сессии?
А разве я где-то сказал что ты говорил про сессии???

P.S. Прошу прощения за флейм.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 15.10.2005, 20:25     # 13
Sensey
Junior Member
 
Регистрация: 25.12.2002
Сообщения: 114

Sensey Нимб уже пробиваетсяSensey Нимб уже пробивается
Hubbitus
Больше идентификатора сессии, или незначащих в плане безопасности вещей (типа предпочтений пользователя) в куках ничего хранить не стоит!
------------------------------

Я не говорил о сессиях.. следовательно - какой нахрен идентификатор сессии?

Я говорю про авторизацию полностью основанную на куках...

Я конечно понимаю что сессии это круто... но польза не всегда от нее есть...
Меня например удивляет когда на сайтах с 5 страничками используют сессии...

Вот глянь на мой проэкт - www.ashdoda.net
Там нет сессий... и используется авторизация которую я дал в пример... ну и иди докажи мне что такая авторизация чем то плоха? Как в плане безопасности так и в плане юзабельности....

Так что не надо мне здесь говорить про "Из "вредных" советов чтоли, как не нужно делать??"

Использовать сессии или куки - дело конкретного проэкта...
__________________
PHP+MySQL
Sensey вне форума  
Старый 15.10.2005, 20:50     # 14
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Sensey:
Я не говорил о сессиях.. следовательно - какой нахрен идентификатор сессии?
Не надо - не надо, я разве написал что в куках только его хранить можно?
Цитата:
Sensey:
Я конечно понимаю что сессии это круто... но польза не всегда от нее есть...
Меня например удивляет когда на сайтах с 5 страничками используют сессии...
В данном случае меня это совсем не удивляет. Можешь назвать хоть один недостаток сессий по сравнению с собственной реализацией чего-то подобного на куках??? Ты еще предложи аутентификацию на JavaScript сделать

Хешь пароля он конечно не пароль, но не вникая в подробности, давай посмотрим простую разницу реализаций. Смотри, перехват кук впринципе не сложная и распространенная ситуация, я не говорю что сесии, хранящие в них идентификатор от этого защищены, но давай посмотрим последствия:
1) ХХХ получил чужую куку с логином и хешем пароля в ней. Что он имеет? Полный доступ к тому сайту от имени пользователя, пока он когда-нибудь, может быть, не сменит паролей. ХХХ может себя никак не обнаруживать и ждать момента когда смогу сильно навредить (жадть момента), много украсть (ждать прихода денег в аккаунт), постоянно быть в курсе конфиденциальных данных и т.д. кому что по вкусу.
2) YYY получил чужую куку с идентификатором сессии. Впринципе, тоже очень нехорошая ситуация, однако, давай посмотрим чем она отличается от ситуации ХХХ: Может так статься, что он вообще получил ее уже после того как сессия закрыта, тогда он вообще никак и не сможет ей воспользоваться (например если троян ее прислал на мыло, и проверили его поздно). Вариант хуже - он все-таки получил его пока сессия жива. Да, тут он имеет доступ к аккаунту пользователя впринципе, такой же как и ХХХ за некоторыми очень важными исключениями (я кстати не говорю встроенные еще защиты секьюрности сессий, пусть ничего их этого не используется), а именно: Он имеет доступ к аккаунту пока жива сессия. Тоесть, если он не сменит авторизационной информации, то имеет этот доступ один раз всего. Далее, если он сменит аторизацию, то при следующем заходе законного пользователя, тот это сразу же обнаружит и как легальный пользователь, скорее всего отнимет свой аккаунт назад (через восстановление, через поддержкуи т.д.)

В связи с этим, лучше сразу делать нормально, тем более что трудов это не предоставляет никаких, наоборот - работать с сессиями в ПХП гораздо удобнее чем изобретать велосипеды с собственной записью, сохранением и извлечением информации авторизации в куках!
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 15.10.2005, 22:35     # 15
Sensey
Junior Member
 
Регистрация: 25.12.2002
Сообщения: 114

Sensey Нимб уже пробиваетсяSensey Нимб уже пробивается
Hubbitus
Ты где то видел что бы я говорил о недостатках? Просто не надо говорить что авторизация на куках это что то совсем древнее и нехорошее...

Спорить про куки и сессии можно бесконечно.... пусть человек использует то что ему удобно...
__________________
PHP+MySQL
Sensey вне форума  
Старый 16.10.2005, 00:51     # 16
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Sensey:
Ты где то видел что бы я говорил о недостатках?
Да, это видел:
Цитата:
Sensey:
ну и иди докажи мне что такая авторизация чем то плоха?
Ты сам просил показать чем она плоха, я и расписал вкратце. А спорить я с тобой совсем не собираюсь.

Цитата:
Sensey:
Просто не надо говорить что авторизация на куках это что то совсем древнее и нехорошее...
Такого я тоже не говорил вобщем-то, только в данном случае, хранить пароль или его хешь в куке совсем не стоит, особенно если этого не делать еще проще!! Об этом я и сказал человеку всего-лишь.

Цитата:
Sensey:
Спорить про куки и сессии можно бесконечно.... пусть человек использует то что ему удобно...
Конечно выбирать ему, я ничего никому не навязываю - спрошено было на форуме, стараюсь объяснить достоинства и недостатки того или иного метода. А спорить стобой, как и говорил выше - совершенно не собираюсь. Да и потом было бы из-за чего (тут не о чем спорить, а вообще в конструктивном споре рождается истина)!
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 16.10.2005, 15:53     # 17
vadim1k
Guest
 
Сообщения: n/a

Бугага! :)

То, что я делаю, как раз из 5 страничек Ну может чуть больше...
 
Старый 23.03.2006, 16:06     # 18
SergoZD
::VIP::
 
Регистрация: 19.10.2003
Адрес: Питер
Пол: Male
Сообщения: 1 467

SergoZD Простой бог
SergoZD Простой богSergoZD Простой богSergoZD Простой богSergoZD Простой богSergoZD Простой богSergoZD Простой богSergoZD Простой богSergoZD Простой богSergoZD Простой богSergoZD Простой богSergoZD Простой богSergoZD Простой богSergoZD Простой богSergoZD Простой богSergoZD Простой богSergoZD Простой богSergoZD Простой богSergoZD Простой богSergoZD Простой богSergoZD Простой бог
Вопрос по php+mysql, посему решил не создавать новой темы.

Есть некая функция
PHP код:
function query ($query)
{
   
$result=mysql_query($query) or error("400 Bad Request","<br><b>Error:</b> ".mysql_error()."<br><b>due execution query:</b> ".$query);

   while(
$res=mysql_fetch_assoc($result))
   {
      
$resalt[]=$res;
   }
   return 
$resalt;

которая преобразует результат запроса в ассоциативный массив
есть две проблемы:
1. если результат запроса нулевой, то происходит благополучное вываливание апача с еррором
2. хочется через эту же функцию выполнять запросы "UPDATE DELETE" и т.п., дающие в качестве результата boolean (при них выдается ошибка про неподдерживаемый тип данных в mysql_fetch_assoc)
Как решить такую задачку?

Для второго варианта делал проверку на тип boolean, и если не совпадает, то выполнял цикл while, но вот 1 проблемы это не решало...
SergoZD вне форума  
Старый 23.03.2006, 16:41     # 19
EvroStandart
Full Member
 
Аватар для EvroStandart
 
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623

EvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собой
Цитата:
SergoZD:
1. если результат запроса нулевой ...
А разьве $result нельзя проверить на размер или количество элементов?
Я вообще прочитал в умной книжке про PEAR DB. Пользуюсь и радуюсь
EvroStandart вне форума  
Старый 23.03.2006, 16:43     # 20
Naked
::VIP::
 
Аватар для Naked
 
Регистрация: 15.05.2005
Адрес: Питер
Сообщения: 1 194

Naked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked Сэнсэй
насколько знаю, нужно заюзать вот так:
1. $result=@mysql_query($query)...., если ставишь @, то на экран ничего не выводится от результата САМОЙ команды...
2. $res=mysql_fetch_array($result, MYSQL_ASSOC)
А для bolean можно попробовать возвращать mysql_num_rows ($res), по-моему при булене она вернет 0...
__________________
Чтобы воля стала действующим началом, тело должно быть совершенным.
Naked вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 14:08.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.