Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.95/20: Рейтинг темы: голосов - 20, средняя оценка - 4.95
 Аватар для stupidstudent
18 / 15 / 0
Регистрация: 25.10.2011
Сообщений: 241

Какой сделать главный класс и/или какая правильная структура?

11.08.2012, 18:31. Показов 4481. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал авторизацию и регистрацию без классов. Все работает как положено.
Переделываю через классы:

Какой сделать главный класс и/или какая правильная структура?
Например, я создам класс fns(методы проверки почты, создания хэша, определения ip и подключение к базе данных), а потом создам унаследованные дочерние подклассы - auth и reg.

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

Такой подход верен? Или предложите свой, пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.08.2012, 18:31
Ответы с готовыми решениями:

Какая структура правильная?
Здравтсвуйте, допустим есть таблица "игры" id name 1 Diablo 2 Starcraft 3 WoW и т.д и каждая игра может относиться к нескольким...

Правильная структура сайта. Как сделать?
Есть 3х страничный сайт. Страницы: Главная, Инфо, Контакты. код файла index.php: <?php get_header(); get_content(); ...

Класс или структура
Задача такая: Есть переменная которая хранит текст. Из этой переменной закинул в коллекцию arrayList только слова. Далее нужно...

34
 Аватар для stupidstudent
18 / 15 / 0
Регистрация: 25.10.2011
Сообщений: 241
12.08.2012, 23:07  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от caballero Посмотреть сообщение
недостаточно для чего?
Не можешь в двух простых классах разобратся а претендуешь на имплементацию хеширования лучшего чем писаные спецами до которых ты вряд ли дорастешь.
вы не так поняли, а тут сразу наезжаете. Дорасту не дорасту, не вам решать.
а про использование CRYPT_BLOWFISH(и еще других методов шифрования), соли и т.д. не объединяют в одну функцию?
Писать и разрабатывать свой алгоритм шифрования без возможности обратной дешифрации, я не собирался и не собираюсь.
Кстати, md5 и sha1 в легкую ломаются с использованием радужных таблиц.
О небезопасности md5 и sha1
http://ru2.php.net/manual/ru/f... s.fasthash

Добавлено через 7 минут
еще вопрос, будет ли целесообразно выделить все запросы к бд в отдельный класс, а там уже наследовать авториз и регист?
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
12.08.2012, 23:47
ВООБЩЕ ТО ЧТО-ТО СОВЕТОВАТЬ ТУТ БЕСПОЛЕЗНОЮ. ЕАДО КАК БЭ ПРИМЕРЫ КОДА И ОТ НЕГО ПЛЯСАТЬ
1
28 / 50 / 2
Регистрация: 10.01.2012
Сообщений: 347
12.08.2012, 23:51
stupidstudent, подумайте над предложением создать классик UsersProvider - т.е. поставщик юзеров, а в нём уже будет реализованы методы проверки пары логин/пароль, он же сам будет юзать БД если ему надо, и наследовать его ненадо, лучше просто юзать объект этого класса, например как сервис.
1
26 / 26 / 1
Регистрация: 30.09.2011
Сообщений: 196
13.08.2012, 00:15
Кстати, md5 и sha1 в легкую ломаются с использованием радужных таблиц.
Во первых еще надо написать что то такое ценное чтобы ктото потратил туеву кучу ресурса для взлома (вы всяком случае я не слышал о массовом взломе линуховых паролей).
во вторых чтобы взломать пароль, в данном случае, хакеру надо добратся до БД где они лежат, а если он туда добрался то пароли юзеров ему уже не нужны.

еще вопрос, будет ли целесообразно выделить все запросы к бд в отдельный класс, а там уже наследовать авториз и регист?
Разумеется нет. Это разные сущности.
Тут подходит агрегация а не наследование. Тем более что сами по себе классы авторизации и регистрации бессмыслены поскольку не имеют смысла объекты для которых они создаются.
1
67 / 60 / 25
Регистрация: 05.05.2009
Сообщений: 131
17.08.2012, 13:52
Задачу можно разбить на 3 сущности:
Работа с базой
PHP
1
2
3
4
5
6
class db
{
   function connect() {}
   function query() {}
   ...
}
Вспомогательные функции
PHP
1
2
3
4
5
6
class tools
{
   function hash() {}
   function check_email() {}
   ...
}
Обработчик пользователей, который использует для работы объекты первых двух классов
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class user
{
   var $db;
   var $tools;
 
   function __construct()
   {
      $this->db = new db();
      $this->db->connect();
      $this->tools = new tools();
   }
   function auth() {}
   function reg() {}
   ...
}
можно наследовать, а можно пользоваться $this->tools->hash() это уже не суть. Главное - использовать классы для тематического разделения методов.
Авторизация и регистрация - это по сути методы по работе с таблицей пользователей, потому должны находиться в одном классе как и другие методы по этой-же теме (update, delete, userinfo, и т.п.)
Если же нужно назначать пользователю права, то систему управления правами можно вынести в отдельный класс, который будет заниматься назначением/удалением прав, созданием групп пользователей и т.п.
1
28 / 50 / 2
Регистрация: 10.01.2012
Сообщений: 347
17.08.2012, 13:58
Только ненадо юзать устаревшее ключевое слово var, сейчас надо явно указывать, это же относится и к методам... а то новички начитаются и начнут дрова ломать
2
26 / 26 / 1
Регистрация: 30.09.2011
Сообщений: 196
17.08.2012, 14:06
Главное - использовать классы для тематического разделения методов.
в таком случае методы должны быть объявлены как static поскольку сохдание объектов таких типов бессмысленно
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
17.08.2012, 14:12
основная загвоздка - в таинственном методе hash()
ТС упорно не говорит что он с ним делает
если бы мы знали, за что отвечает hash() и кто его использует, мы могли бы что-то сделать

подозреваю, что тут нужен класс для работы с этих хэшом, КОТОРЫЙ И НУЖНО ВПРЫСКИВАТЬ ВО ВСЕ ОСТАЛЬНОЕ
таким образом мы абстрагируемся от способа шифрования пароля и можем в случае надобности подменить способ шифровки
0
26 / 26 / 1
Регистрация: 30.09.2011
Сообщений: 196
17.08.2012, 14:25
ТС упорно не говорит что он с ним делает
какая разница - это делать в любом случае глупо

подозреваю, что тут нужен класс для работы с этих хэшом,
а зачем там целый класс?
0
67 / 60 / 25
Регистрация: 05.05.2009
Сообщений: 131
17.08.2012, 14:48
Цитата Сообщение от Василий Макогон Посмотреть сообщение
основная загвоздка - в таинственном методе hash() ...
Вообще-то без разницы как будут хешироваться данные, вопрос то был не об этом
Если он хочет какие-то свои алгоритмы реализовывать, может и понадобится класс, а может обойдётся одной функцией.

Добавлено через 7 минут
Цитата Сообщение от d1gi Посмотреть сообщение
Только ненадо юзать устаревшее ключевое слово var, сейчас надо явно указывать, это же относится и к методам... а то новички начитаются и начнут дрова ломать
Я же привёл схему, а не рабочие классы, потому не указывал какими эти переменные и методы будут в работе. Не зная всей задачи и загнав что-то в приват, я могу опять-же запутать новичков
1
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
17.08.2012, 15:00
Цитата Сообщение от caballero Посмотреть сообщение
а зачем там целый класс?
затем, что скорее всего нужно будет как минимум 2 метода - проверка какого-нибудь значения из куки и выдача нового хэша. это - бизнес логика и если в хэш будет ещё и соль шифроваться, то без класса никак не обойтись
0
26 / 26 / 1
Регистрация: 30.09.2011
Сообщений: 196
17.08.2012, 15:06
затем, что скорее всего нужно будет как минимум 2 метода - проверка какого-нибудь значения из куки и выдача нового хэша. это - бизнес логика и если в хэш будет ещё и соль шифроваться, то без класса никак не обойтись
Не вижу проблем почему это не может быть в одной функции.
0
 Аватар для stupidstudent
18 / 15 / 0
Регистрация: 25.10.2011
Сообщений: 241
17.08.2012, 21:13  [ТС]
Цитата Сообщение от Darevill Посмотреть сообщение
Работа с базой
PHP
1
2
3
4
5
6
class db
{
* *function connect() {}
* *function query() {}
* *...
}
насчет query(), функция должна обработать запрос и вернуть значение или в самой функции должен быть запрос?
0
67 / 60 / 25
Регистрация: 05.05.2009
Сообщений: 131
17.08.2012, 22:33
Цитата Сообщение от stupidstudent Посмотреть сообщение
насчет query(), функция должна обработать запрос и вернуть значение или в самой функции должен быть запрос?
Функция принимает запрос в качестве аргумента, выполняет запрос через mysql_query() и возвращает результат ввиде массива данных, если это был SELECT запрос.
1
 Аватар для stupidstudent
18 / 15 / 0
Регистрация: 25.10.2011
Сообщений: 241
17.08.2012, 23:02  [ТС]
Цитата Сообщение от Darevill Посмотреть сообщение
Функция принимает запрос в качестве аргумента, выполняет запрос через mysql_query() и возвращает результат ввиде массива данных, если это был SELECT запрос.
Да, так и делал. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.08.2012, 23:02

Структура или класс ?
Всем привет. Объясните, что и в какой ситуации лучше использовать - структуру или класс ? Можете привести практические примеры (без...

Структура или класс
Подскажите, пожалуйста, своими словами, что такое структура и что такое класс. В чем отличие и как их использовать? У меня есть...

Отдельно класс данных, класс формул и главный класс
Здравствуйте! У меня есть три вопроса. Первый вопрос. Скажите пожалуйста! Правильный ли это подход к созданию приложений :...

Класс или структура или кортеж?
В программе определен класс, в котором нет функций, а только 3 поля: string, int, decimal (возможно, появится 4-е decimal). Программа...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru