За последние 24 часа нас посетили 16773 программиста и 1620 роботов. Сейчас ищут 1312 программистов ...

Нужно написать систему аккаунтов с древовидным отображением.

Тема в разделе "PHP Free-Lance", создана пользователем Pavel_php, 17 дек 2010.

  1. Pavel_php

    Pavel_php Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    24
    Симпатии:
    0
    Скорее всего будет необходимо прикрутить это к вордпрессу. Судя по всему объём работы небольшой, жду.
     
  2. Pavel_php

    Pavel_php Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    24
    Симпатии:
    0
    Уже вроде бы 10 человек просмотрело запись, поэтому напишу:
    Если вы можете просветить меня по поводу того, сколько времени такое может занять и сколько может стоить - буду благодарен. Я относительно представляю, но не хотелось бы оказаться в дефеците информации, когда нанявшийся на работу скажет, мол, делать это надо полгода, а стоить это будет 5 миллионов.
     
  3. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Задача непонятная. Распишите поподробнее, чего Вы хотите.
     
  4. Pavel_php

    Pavel_php Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    24
    Симпатии:
    0
    Вордпресс не является строгим условием, но без него объём работы по идее сильно возрастёт. Если конечно прикручивание этой системы к нему не будет более сложным.

    Нужно сгенерировать базу из, скажем, полумиллиона пользвоателей, чтобы id у них был такой же как и логин - семи/шестизначное случайное число (то есть, без порядковости) и пароль тоже такое же случайное число (но другое, ясное дело). Помимо этого нужно настроить такую штуку, как "включение доступа к инвайтам". Не знаю уж как ещё назвать. Суть в том, что я могу аккаунту открыть доступ к трём (если как на схеме) логинам/паролям для того, чтобы он по ним приглашал людей. То есть у пользователя будет только логин и пароль вида 2938783 8002732, никаких почт и личных данных не нужно. Плюс пара доп. параметров аккаунта, которые будут отображаться в древе (как зелёная-красная лампочка, например и одна цифра (что-то вроде "ранга")).

    Древа графически изображать нужно будет небольшие - верхний по древу относительно пользователя (тот, кто пригласил), и его "нижние" (кого он пригласил).
    [​IMG]

    Кто выше и ниже больше, чем на 1 уровень - не важно для пользователя. Админу общей картины графически изображать не нужно.
     
  5. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Если я правильно понял, Вам нужно графическое отображение одного узла (со связями) обычной пирамиды.
    Причём узел может иметь четыре связи, одна с вышестоящим, три с нижестоящими. Так?

    БД данных есть? Или нужно создать заново?
    Нужно только показать связи или нужно ещё и управление/редактирование ими?
     
  6. Pavel_php

    Pavel_php Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    24
    Симпатии:
    0
    Количество связей с нижестоящим может быть и не три будет, но это наверняка не важно. Везде одинаковое, одним словом.

    Я же на все вопросы уже написал ответы. БД надо сгенерировать (написано как). Управление заключается в открытии доступа на логины-пароли (что глупо и сложно, как я только что понял), либо доступа на те аккаунты, логины-пароли которых есть у пользователя в распоряжении.

    Нужно ещё как-то прикрутить к аккаунтам эти логины-пароли. Чтобы внутри акка уже было где-то записано, какие логины-пароли у аккаунтов, которые от него отходят по схеме.
     
  7. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Всё очень путанно, я опять ничего не понял. :(
    И так, по порядку...
    1) С архитектурой связей понятно.
    2) Наполнить БД тестовыми данными нет проблем. (По Вашему будет "сгенерировать БД")
    Я спрашивал о другом: структура БД уже создана? Или необходимо будет разработать эту структуру и создать её описание (в виде SQL-команд)? В общем-то ничего сложного, просто уточняю задачу.
    3) Что есть "открытии доступа на логины-пароли"? И что есть "либо доступа на те аккаунты, логины-пароли которых есть у пользователя в распоряжении"? И зачем это?
    Если я правильно понимаю задачу, Вам просто нужно установить связи узла(юзера) с другими узлами(юзерами). Если так, то никаких логинов и паролей других юзеров знать не нужно, достаточно их ИД. Вообще, уверен, что Вам известно, что логин/пароль юзера должен быть известен только этому юзеру - поэтому я не понел Вашу мысль по их поводу, уточните.
    4) "...какие логины-пароли у аккаунтов, которые от него отходят по схеме."
    Это понятно. Вообще, это схемотехника внутри БД, - ничего сложного, 1-2 дополнительные таблички внутри БД для связей одного узла с N другими узлами.
    5) Достаточно ли решения задачи типа "чёрный ящик" для использования его Вами или другим разработчиком в Вашем существующем проекте? Или необходимо встроить решение в уже существующий проект с учётом всех его особенностей, в т.ч. уже существующей структуры БД и имеющегося кода?
     
  8. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
  9. Pavel_php

    Pavel_php Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    24
    Симпатии:
    0
    1) Хорошо.
    2) Хорошо.
    3) Ну вот например я новый пользователь. Меня пригласил другой передав мне логин и пароль (послед чего пароль я по-ме-нял (поэтому он будет известен только одному пользователю)). Теперь у меня по схеме есть пустые ячейки для приглашения людей. И есть уже (где-то) место, где написаны для каждой ячейки логин и пароль для приглашения в систему. Но до определённого момента они заблокированы. И мне (уже админу) нужна такая кнопка, которая будет совершать разблокировку аккаунтов для того, чтобы пользователь мог приглашать по данным ему логинам-паролям людей.
    4) Хорошо.
    5) Единственная особенность, которую хотелось бы учесть - это вордпресс. Никаких сложных особенных структур в сайте больше не предполагается. Система аккаунтов будет основной, если можно так сказать.
     
  10. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Pavel_php
    криво это все, приглашения должны зависеть от сферического уровня в вакуме/количества рейтинга/денег на счету
    бедный админ =)
    а логин и пароль должен генерироваться на лету по мере необходимости, а не быть забитым заранее
     
  11. Pavel_php

    Pavel_php Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    24
    Симпатии:
    0
    Поясни?
    Я не знаю, как это сделать. Можно и так, если так удобнее и "прямее".
     
  12. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    2) Если я правильно понял...
    Т.е. уже есть некая структура в БД в которой хранятся данные аккаунта. И нужно только разработать структуру БД именно для дерева связей. Так? Или нужно ещё добавить хранение каких-либо дополнительных данных в аккаунте (для юзера)?

    5) Понятно.
    Т.е. нужно добавить возможность работы с WP (с его БД и его кодом). Так?

    4) пишу...
     
  13. Pavel_php

    Pavel_php Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    24
    Симпатии:
    0
    Есть система аккаунтов вордпресса, но она просто невероятно глупая. Никаких данных пока нет. Система аккаунтов может быть никак не связана с вордпрессом, главное - чтобы они вместе работали. Например комментирование на сайте от имени аккаунта не нужно.
    5) Ну да. Чтобы вход на wp-сайт (без логина сайт закрыт) осуществлялся через аккаунты этой новой системы и внутри wp-сайта можно было смотреть на это мини-древо с некоторыми новыми переменными-в-аккаунтах (число, скажем, 0-99 в отдельном маленьком окошечке, которое назначаю и меняю я, как админ, и кнопочка зелёный-красный, которую может переключать сам пользователь).
     
  14. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    3) Один фиг не понял :( А если условия непонятны, то задача нерешаема.
    Попытаюсь догадаться...
    Вам нужно чтобы юзер мог рассылать приглашения другим юзерам присоединиться к нему. Если приглашённый юзер даёт согласие присоединиться, то образуется связь с приглашающим юзером. Если отказывается, то никакой связи не образуется. Если связь образована (т.е. приглашённый согласился присоединиться), то ему становится доступна возможность приглашать других. Но изначально ему можно пригласить 0 юзеров. Чтобы юзер мог пригласить других юзеров, админ должен указать(разрешить) ему число возможных приглашённых. Так?

    Т.е. опять логин/пароль не нужно. Достаточно послать приглашаемому уникальный URL странички, где будет две кнопки "Согласен присоединиться" и "Пшёл нафиг!". Ну тут понятно надеюсь, - по Согласен образуется связь, по Пшёл ничего не делается.

    6) Кстати, а возможность "отсоединиться" Вы включили в задачу? Или это не нужно?
     
  15. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    5) Эээ, т.е. Вам ещё нужно сделать вход на сайт? (судя по "Чтобы вход на wp-сайт ... осуществлялся через аккаунты этой новой системы"). Я то думал, что вход на сайт будет через Вашу систему, в частности через WP.
    Или я не понял Вашей фразы?
     
  16. Pavel_php

    Pavel_php Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    24
    Симпатии:
    0
    Во-первих извини, что, судя по всему, плохо объясняю. Теперь...
    Юзеры будут приглашать других людей не по интернету, по крайней мере не незнакомых людей. Это почему-то вылетело из головы у меня. Поэтому на словах становится ясно - хочет ли человек присоеденится или нет. Если хочет - происходит передача инвайта. Если можно сделать ссылку вида http://www.сайт.ru/инвайтХХХХХХ, при переходе по которой будет та самая кнопка "Хочу!" и, раз такое дело, выбор логина и пароля (айди по прежнему нужно генерировать случайный, а не последовательный) - то здорово. И да, изначально ему можно пригласить 0 юзеров.
    Уменьшать-увеличивать мне не нужно. Всё что нужно - одним разом разрешать юзеру совершать пришлашения. Количество приглашённых для всех аккаунтов будет одинаковое. Пусть 4.

    Возможность отсоединяться не нужна.
    Ну на данный момент у меня вордпресс так и настроен, что вход только через ввод логина-пароля. Всё, что нужно, насколько я понимаю - это привязать базу логинов-паролей к WP. Или не так?
     
  17. gra4

    gra4 Активный пользователь

    С нами с:
    9 сен 2009
    Сообщения:
    12
    Симпатии:
    0
    Имхо, если стоит цель сделать закрытое сообщество, такой "беззащитный" вариант не канает.
     
  18. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Хм, легко. ;)
    Любая защита состоит из двух:
    - техническая
    - административная
    Ссылка это техническая часть.
     
  19. Pavel_php

    Pavel_php Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    24
    Симпатии:
    0
    О существовании этого закрытого сообщества будут знать только те, кому лично рассказали. А если им стало интересно - они и так получат ссылку эту. Если не стало интересно - то зачем им подбирать такую ссылку? Хотя конечно можно и посложнее, просто некоторая часть целевой аудитории такая, что ей легче на бумажке написать и передать, чем "отправить ссылку".

    Сайт будет закрыт от индексации поисковиками и нигде не будет пиариться.
     
  20. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Pavel_php
    угу "лепры не существует"
    а какая тематика сайта? я сейчас лопну от любопытства =)
     
  21. Pavel_php

    Pavel_php Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    24
    Симпатии:
    0
    Когда запущу, когда после запуска пройдёт 1-2 месяца - смогу сказать. Сайт некоммерческий. Не вроде лепры. Ничего сверхинтересного нет.
     
  22. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Эээ, если приглашение будет в оффлайне методом, что-то вроде вручения визитки, на которой будет напечатан логин/пароль для присоединения, то это действительно дыра в безопасности да и не логично это.
    Во-первых, логин+пароль не нужен, достаточно простого уникального кода, типа как на карточках оплаты телефона, например. Во-вторых, логичнее было бы так: человек регистрируется на сайте, затем получает URL приглашения или вводит с визитки код присоединения. Регистрировать приглашаемого автоматом на сайте как реферала (по даденным логину/паролю) нехорошо. Но ... хозяин-барин, как скажешь так и будет.

    GUID в качестве ИД - случайнее некуда. :)

    Ну, я пока вижу так: создать несколько табличек в БД для расширения данных аккаунта и создания связей между юзерами. Создать страничку присоединения. Создать страничку ввода/редактирования дополнительных данных аккаунта. Создать страничку для показа связей. Создать страничку для админа (для администрирования связей). При этом ИД юзера брать из внешней (к этой примочке) системы, в частности WP. Юзер регистрируется на сайте обычным для установленной системы способом (например WP, ну или любой другой). Встроить систему в WP.
    Что ещё забыл?

    п.с.
    Кстати, я там письмецо послал на указанный e-mail.
     
  23. Pavel_php

    Pavel_php Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    24
    Симпатии:
    0
    Хотелось бы, чтобы регистрационная форма была закрыта для случайного прохожего. Т.е. человеку, который каким-то невероятным образом забёл на сайт, должна быть доступна только табличка с полями "логин", "пароль" и, если такое возможно, полем "уникальный код" или что-то в этом роде. Получается, что обладатель такого кода просто вводит его в это поле и жмёт кнопку - после чего попадает на страницу для регистрации своего логина и пароля для дальнейших входов. Айди его уже будет настроен так, что он встроен в древо на нужном месте.

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

    Так а если по дадённому уникальному коду?

    Прекрасно.

    Если бы я хорошо понимал процесс создания, а обращался сюда только по причине наличия у меня крайне кривых рук - я бы мог более осознано ответить. Но всё равно попробую.
    - Про таблички в БД не знаю.
    - Страничка присоеденения теперь мне представляется, как третье поле после полей Логин и Пароль на той странице сайта, когда он закрыт для незалогиненого юзера.
    - После ввода кода в это третье поле получается переход на эту страницу ввода/редактирования доп. данных и данных вообще.
    - Страничка связей должна быть доступна по прямому переходу с главной, на страничку такого же дизайна, просто с этой схемой. Функциональность отличает её от простой картинки тем, что на ней можно будет переключить на своём отображении ту "лампочку" (малекький кружок\квадратик в углу блока обозначающего человека в древе). С белого на чёрный, например. Это (лампочка) вроде совсем несложная функция, так что не стоит на неё много внимания сейчас обращать.
    - Страничка для админа. Ну наверное нужно.
    - Зачем брать ИД юзера из внешней? ИД просто не должен раскрывать последовательность людей. А для WP (для входа на сайт) нужны только логин-пароль.
    - Опять же про регистрацию. Писал выше.
    - Встроить систему в WP. Ну если это отдельной функцией называть после всего вышеперечисленного - то да.
     
  24. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Ну да, что-то в этом роде - собственно код приглашения нужен только для доступа к регистрации на сайте. В зависимости от, можно сделать:
    - Посетитель заходит на сайт, у него требуют код. Вводит код и попадает на стандартную страницу регистрации WP.
    - Можно чуть изменить WP, т.е. добавить одно поле (код приглашения) на страницу регистрации. Но это не очень хорошо, потому что затрагивает основную систему - в первом случае лучше, примочка и основная система независимы, хотя и не совсем красиво.

    Я бы всё-таки рекомендовал код вводить отдельно, до регистрации. Т.е. сделать примочку независимую от WP, тогда будет возможность апгрейдить основную систему, например.

    Ok.

    Как правило во всех системах ИД юзера присутсвует в некоторых ссылках (например, на просмотр его аккаунта).
    Поэтому просто так отказаться от него не удастся, для этого надо будет явно вклиниваться в установленную систему, как правило. Надо посмотреть как с этим в WP, может предуспотрели.

    Это не отдельная функция, это одно из условий (один из пунктов) задачи. :)
    Есть и более мелкие, просто мы их пропустили как само собой разумеещеся или недостойные внимания.
    п.с.
    Иногда я участвую в проектах, где ТЗ чуть ли не до последней запятой расписано. Писать там легко - работаешь как обычный кодёр, но так нудно! Зато практически нет вопросов ни от ни к. А вот задачки типа "а сделай ка ты мне вот это, я ещё не знаю что хочу, но хочу!" гораздо интересней, хотя вопросов и претензий друг к другу уйма при этом. :D
     
  25. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    авто инкремент просто удалить придется и вместо null рандом циферку поставить