| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Избранное > API для добавления статей |
| Автор: Aliance 6.7.2005, 18:24 |
| Хочу с вашей помощью написать собственный менеджер для работы со статьями. Нужно продумать алгоритм сперва. Итак, мой вариант: Имеем авторизацию, 2 уровня доступа (админ, 1, я + все остальные регистрированные участники) + гости. Имеем админку, в ней можно: писать/редактировать/удалять новости и подтверждать. Про 4ое чуть позже. Все гости имеют права Read-only. Регистрированные участники - read & write. Но как они напишут, статья не появится, а попадет в 4ый раздел админки, где у каждой такой статьи есть невыбранный чекбокс. Если админ его выберет - статья добавится и уберется из 4 раздела. Еще крайне важно иметь комментирование и оценивание статьи. Комментирование такое: гости пишут под ником Гость, регистрированные только под своим, ник админа красный. Все. Если нет конструктивных предложения, а они должны быть, то нужно приступать к написанию. Надеюсь на вашу помощь |
| Автор: Bikutoru 6.7.2005, 18:45 | ||
Только тут следует отслеживать, чтобы участники могли редактировать только свои статьи, а администратор - любые. И еще, я бы зарезервировал возможность создания нескольких учетных записей администраторов на случай разростания проекта. А в целом, идея логична... |
| Автор: Mal Hack 6.7.2005, 19:51 |
| Должно быть N кол-ва групп (масок доступа) и пользователей, которые к этим группам относятся. Надо предусматривать возможность премодерации статей, помимо этого - категории статей надо предусмотреть. |
| Автор: Aliance 6.7.2005, 20:10 | ||||||||
Они вообще не будут их редактировать, иначе премодерация ни к чему. Представь, человек написал хорошую статью, я ее подтвердил, а он потом ее редактирует... И он может там написать что угодно... Не есть гут...
Собственно я так и говорил
Дельное дополнение, спасибо
Угу, гут, спасибо. Итак, завтра начну к первым скриптам =) |
| Автор: Mal Hack 6.7.2005, 20:12 |
| Aliance ты определись. Тебе нужен паблишер, т.е. аля статьи по датам или тебе нужно что-то вроде журнала, где надо разбивать на выпуски и потом утверждать администратором целый выпуск. |
| Автор: Aliance 6.7.2005, 20:20 |
| Мне нужны статьи для сайта. Уверен, в основном буду писать я, но так же, неплохо бы иметь возхможность и гостям писать... Просто написал статью "Как включать компьютер" 6 июля - она появилась в списке ссылок, кликаем - открывается страница с этой статьей. Все можно вручную делать, но не хочеться тратить много сил, лучше я в php поупражняюсь |
| Автор: Aliance 6.7.2005, 20:41 |
| Использовать будем файлы. Начнем с регистрации. Задача: сделать страничку с регистрацией (register.php), при регистрации перенаправлять на главную (index.php). Если пользователь зарегистрирован - выводить привествие, вида "Привет"+имя, если нет - форму для авторизации и ссылку на страницу регистрации. Иду делать... Как появятся первые подводные камни - прибегу сюда |
| Автор: Mal Hack 6.7.2005, 20:46 | ||
База |
| Автор: Opik 6.7.2005, 20:46 |
| Aliance имхо база Добавлено @ 20:46 Aliance да и начинать с регу глупо. |
| Автор: Aliance 6.7.2005, 20:50 | ||||
Почему?
Я так и хотел, но у меня 1 всего база осталась. Где я буду хранить остальную инфу о статьях? Или думаете можно в одну БД засунуть и регу и инфу? Окей... база так база )) |
| Автор: Opik 6.7.2005, 20:56 | ||
Aliance
тебе главное рега? начать нужно хотя бы с проектирования БД. |
| Автор: Aliance 6.7.2005, 20:59 | ||
просто там есть непонятная для меня вещь...окей, БД есть. Что дальше? Нужно придумывать поля? Я думаю из реги такие: ник, мыло, пароль, статус Из статей такие: кол-во постов, кол-во комментариев и наверное и все?! |
| Автор: Opik 6.7.2005, 21:04 |
| Aliance подготовь полные SQL запросы создания таблиц для: пользователей групп новостей/статей категорий |
| Автор: Aliance 6.7.2005, 22:49 | ||
Если верить ПХПМайАдмин, то вставка делается так:
Вот что получается: http://www.jsguide.spb.ru/TEST/login/index.php |
| Автор: Opik 6.7.2005, 23:03 |
| Aliance ты бы лучше структуру таблиц в студию. |
| Автор: Aliance 6.7.2005, 23:11 |
| 1 БД (jsguider_articals) 1 Таблица пока что (main) 7 пока что полей (nick, email, pass, status, posts, comments, id) nick - ник, TINYTEXT, полный текст email - мыло, TEXT, полный текст pass - пароль, TEXT, полный текст status - статус, tinyint(3) UNSIGNED posts - посты, int(10) UNSIGNED comments - комменты, int(10) UNSIGNED id - первичный ключ, AUTO_INCREMENT INT( 255 ) UNSIGNED |
| Автор: Opik 6.7.2005, 23:27 | ||
ну что ты как маленький? молча скинул:
Да и "пока что" лишнее. |
| Автор: Aliance 6.7.2005, 23:29 | ||||
Не извесно...
Не понял... зачем ее создавать, если она уже создана. |
| Автор: Opik 6.7.2005, 23:33 | ||
| Aliance я намекаю на:
зачем это писать? просто скинул запрос. будет и так понятно, что где куда. |
| Автор: Aliance 6.7.2005, 23:37 |
| Ладно. Теперь, что - регистрацию? |
| Автор: Opik 6.7.2005, 23:39 | ||
Добавлено @ 23:39 Да и статус - 1 или 0 - мало, нужны группы. ИМХО |
| Автор: Aliance 6.7.2005, 23:43 | ||||
Admin и пользователи. Все. Кто еще-то?
Создания или заполнения? Создать можно в пхпмайадмин вручную, мне так понятнее. А заполнять пхп скриптом автоматом... так все же создания? |
| Автор: Opik 7.7.2005, 07:52 | ||||
Aliance
редакторы, забанненые... и т.д.
создания. |
| Автор: Bikutoru 7.7.2005, 09:47 | ||||
На самом деле я немного другое имел в виду. Я же писал, что редактировать можно только свои статьи. Если администратор отредатировал статью, то можно запоминать автора последнего изменения (не обязательно автора самой статьи), и, если его права выше прав владельца статьи, то не давать доступ. Можно предусмотреть запрет редактирования опубликованных статей. Если же запретить редактирование вовсе, то авторы не смогут исправлять свои стилистические, орфографические и грамматические ошибки, это придется делать администратору, что очень затруднит его работу. |
| Автор: Aliance 7.7.2005, 10:33 | ||||||
Нет, этого я не хочу
Зачем их создавать, я ж уже создал...не понимаю
Просто нужно пользоваться кнопкой предпросмотр! |
| Автор: Opik 7.7.2005, 11:33 | ||||
Aliance
ты не хочешь? или ситуация такая: ты искал скрипт, ты его не нашел, ты решил что будет хорошо если тебе его напишут?
ты создал, а мы нет, нам непонятно. что и как. |
| Автор: Aliance 7.7.2005, 11:41 | ||||
Я его сам собрался писать, просто с вашей помощью.
Я же кинул структуру таблицы. Что еще? |
| Автор: Opik 7.7.2005, 12:35 | ||
| Aliance просто ты не понял, про какой вид я говорил, достаточно просто:
и так далее. так понятнее, иногда объяснять (если тип enum) ну или по желанию :_) |
| Автор: Aliance 7.7.2005, 14:13 |
| Хорошо, это сделано (хоть и по другому). Теперь переходить к следующей части или все же сделать это как ты просишь? |
| Автор: Opik 7.7.2005, 15:22 |
| лучше как я прошу. пож-та |
| Автор: Aliance 7.7.2005, 16:08 | ||||
|
| Автор: Opik 7.7.2005, 16:46 |
| другое дело. тока пароль надо либо через password, либо через md5 делать. |
| Автор: Aliance 7.7.2005, 17:04 |
| Вот что я и хотел сделать (md5), забыл |
| Автор: Mal Hack 7.7.2005, 17:05 |
| Тока не md5, а уж sha1 |
| Автор: Opik 7.7.2005, 17:06 |
| Mal Hack почему? |
| Автор: Mal Hack 7.7.2005, 17:13 |
| md5 умер, вобщем коллизию нашли и обсуждалось это на форуме |
| Автор: Aliance 7.7.2005, 17:19 | ||
Ок, не проблема. Давайте по делу?
|
| Автор: Opik 7.7.2005, 23:15 |
| теперь таблицу самих статей, групп, группы - обязательно |
| Автор: Aliance 8.7.2005, 10:08 | ||
Что туда должно входить? ID, собственно статья, раздел, комментарии - что-нибудь еще? Группы зачем, их всего 2? |
| Автор: Opik 8.7.2005, 10:22 |
| Aliance говорю же - редакторы и т.д. тебе не нужны? сейчас не нужны? а ведь вдруг понадобятся? |
| Автор: Aliance 8.7.2005, 10:33 |
| Для них отдельную таблицу? А что в ней будет хранится? |
| Автор: Opik 8.7.2005, 13:49 |
| Aliance все права которые есть, да, отдельной таблой. |
| Автор: Aliance 8.7.2005, 14:32 |
| Админ, Редактор, Пользователь, Гость. 4 маски. Создаю таблицу и что 4 поля в ней? Тогд там должны хранится boolean? |
| Автор: Opik 9.7.2005, 12:12 |
| Aliance почему? хватит enum('yes', 'no') или enum('1', '0') |
| Автор: Mal Hack 9.7.2005, 13:44 | ||
Вот лично я с 0 и 1 путаюсь, а yes, no - длинно. В Инвижоне используется Y и N. |
| Автор: Aliance 9.7.2005, 13:54 |
| Вы меня запутали. Опик, объясни что должно хранится в этой таблице. |
| Автор: Opik 9.7.2005, 17:15 |
| Mal Hack в самой mysql у пользователей Y и N |
| Автор: Гость_Viktor 16.7.2005, 14:35 |
| Пока вы далеко не зашли! Есле вы используете базу! Тогда лучше есле статья будет в виде файла а ссылка храниться в базе на нее. Тогда мы облегчим вес базы. Как такой вариант? Я уже работаю в полуручном варианте. Админ еще не готов. Проблемы были с защищеным режимом сервера. Пришлось темы и разделы создавать в базе и генерить ссылку на файл. Каталог с файлами придется защищать. Мое мнение. Пока |
| Автор: Aliance 16.7.2005, 23:13 |
| Спасибо, интересно. А далеко мы не зашли потому что никто не пишет...по теме по крайней мере |
| Автор: Aliance 16.5.2006, 22:18 |
| Хы ) после написания регистрации пришло время вернутся к написанию данного скрипта - статей. Опик, хочу извенится за все свои посты - прочитал их сейчас и ужаснулся. Понял как многово я тогда не знал и откровенно тупил Итак, регистрация у меня теперь есть. Она у меня с форума IPB. Новый план: таблицы статей, таблица комментариев, таблица групп, таблица категорий. |
| Автор: Opik 17.5.2006, 20:25 | ||
| Aliance, я сейчас тоже почитал - улыбнуло
скидывай дамп |
| Автор: Aliance 17.5.2006, 21:33 | ||||
Пример 1 еще неодобренной статьи с 1 комментарием:
Вот. Логин и группа будет братся из другой БД, она уже готова (БД форума IPB) Пока возникают такие вопросы: • что-то сделано не так? • поля content заданы как varchar(255) - хватит ли этого? Если статья может быть на страницу. Может лучше BIGBLOB использовать? • если вся статья скрыта, то на "скрытость" комментов должно быть все равно. Реально ли? • не понимаю особого назначения 3 таблицы |
| Автор: -=Ustas=- 18.5.2006, 10:12 | ||||
Aliance, ну во-первых, я бы вынес авторов в отдельную таблицу и связывал бы по id-ишникам, т.к. это у тебя сечас избыточная информация, затем, мне не понятно для чего это поле
имеет текстовый тип. Я так понимаю, оно должно иметь связь по id-ишнику с третьей таблице section.
в таблице `articals` тоже не уместно. Поля дат, я бы перевел в тип INT(10) и загонял бы туда дату в формате unix-timestamp. Таблица `articals_comments` - я вообще не вижу как она связана с основной таблицей статей, должно быть поле articleID, которое будет содержать ссылку на своего родителя, т.е. на статью. Поля content я бы сделал тип TEXT. |
| Автор: -=Ustas=- 18.5.2006, 10:33 | ||
Я бы сделал так:
|
| Автор: Opik 18.5.2006, 17:36 |
| А я бы сделал как -=Ustas=-, но в том отличии, что поле content с типом TEXT вынес бы в отдельную таблицу и связал по ID |
| Автор: -=Ustas=- 18.5.2006, 17:53 | ||
Так будет оптимальней? |
| Автор: Opik 18.5.2006, 17:55 |
| -=Ustas=-, Да, т.к для поля BLOB, TEXT не поддерживаются таблицами HEAP, грубо говоря выборка из таблиц, содержащих TEXT, BLOB идет при помощи файлов. Добавлено @ 17:56 А не в памяти, как у остальных, но тут много нюансов по сути есть. |
| Автор: Aliance 18.5.2006, 21:24 |
| Ээ, а если так оставить? Мне так понятнее, во-первых. Во-вторых, зачем мне авторов в отдельную таблицу выносить-то? |
| Автор: -=Ustas=- 18.5.2006, 22:48 |
Можно Вот именно, это только ВО-ПЕРВЫХ, а далее ты будешь смотреть на эту структуру и сам с себя улыбаться. В твоем подходе, это называется избыточной информацией. Смотри, создал ты 50 статей, в итоге у тебя получается 50 строк с 50-ью никами Aliance. А вдруг ты захотел поменять свой ник - тут тебе придется править его в 50-строках, вместо того, чтоб исправить в одном месте. Это не рационально, использовать подобную структуру. |
| Автор: Opik 19.5.2006, 08:19 |
| Aliance, Есть понятнее, а есть правильнее и логичее, что потом, в итоге, станет понятнее первого. Что лучше выбрать? |
| Автор: Aliance 21.5.2006, 12:59 |
| Приблизительно так же реализована БД в IPB Ну да ладно, сделаю так Что далее писать нужно? Уже непосредственно само добавление статей? |
| Автор: Opik 21.5.2006, 17:51 |
| Aliance, Я думаю, было бы неплохо сделать модульное ядро для того, что будет. Т.е захотел то - подключил модуль и всё работает. На примере новостей. Тогда и проблем с расширяемостью быть не должно. |
| Автор: Aliance 21.5.2006, 17:59 |
| Поясни? Возможно меня это не устроит, т.к. мой сайт итак уже работает на модулях. И статьи будут подключатся как domen.com/index.php?m=articals&... |
| Автор: Opik 21.5.2006, 18:41 |
| Aliance, ну примерно это же я и имел в виду. |
| Автор: Aliance 21.5.2006, 19:06 | ||
Гуд
|
| Автор: Aliance 22.5.2006, 19:09 |
| Тоесть админку? Возможности: • удалять статьи (админ+модер+автор) • проверять и удобрять статьи (админ+модер) • редактировать статьи (админ+модер+автор) • управлять категориями/группами/масками доступа/всем остальным (админ) Так? ЗЫ: давайте не будем называть это новостями, это статьи |
| Автор: -=Ustas=- 22.5.2006, 19:17 |
Сорьки, оговорился |
| Автор: Opik 23.5.2006, 10:52 |
| -=Ustas=-, Я админку обычно оставляю на потом Aliance, ну пока так, если начинаешь с админки. Но чем управлять если ничего нету? (Это моя логика) |
| Автор: -=Ustas=- 23.5.2006, 13:02 | ||
Не согласен |
| Автор: Opik 23.5.2006, 15:02 |
| -=Ustas=-, насчет структуры я согласен. в остальном - кому как нравится. |
| Автор: -=Ustas=- 23.5.2006, 15:10 |
Opik, ну вот смотри, спроектировали мы структуру, и что, начинаем делать пользовательскую часть, т.е. интерфейс для посетителей, а данные для тестов вносить постоянно через консоль или phpmyadmin-а ?! |
| Автор: Opik 23.5.2006, 15:18 |
| -=Ustas=-, Это долго? хватит нам уже флудить не по теме. |
| Автор: Aliance 23.5.2006, 15:40 | ||
я тоже так согласен В админке я максимум что напишу - ее общий вид. Ибо как я могу написать, скажем, редактирование статей если ниодной статьи нет |
| Автор: Opik 23.5.2006, 15:47 | ||
| Aliance, теперь определись, какой будет функционал. какие возможности, и так далее. подробно. Только не надо что то типо такого:
:) |
| Автор: -=Ustas=- 23.5.2006, 15:58 | ||
Слушайте, странные вы однако люди |
| Автор: Opik 23.5.2006, 16:00 |
| -=Ustas=-, По логике ты прав. Но иногда проще и удобнее "наоборот" |
| Автор: Aliance 23.5.2006, 20:54 | ||
уже же это рассматривало: просмотр, добавление, модерирование и администрирование статей. разбивка пользователей на группы. разбивка статей на категории. Или я что-то не так понял? -=Ustas=-, я обычно первую тестовую статью добавляю вручную. Мне так проще |
| Автор: Opik 24.5.2006, 09:32 |
| Aliance, Это плоские возможности, а таких как теги, rss, и т.д не будет? |
| Автор: Aliance 24.5.2006, 11:25 |
| Теги, да, будут. Ну и смайлики, соответственно. RSS - а зачем? Честно, я никогда с ним вообще не работал. И не понимаю, зачем он мне пригодится, если статьи через вывод из БД будут показыватся? Потом еще тогда возможность скрывать не только всю статью, но и комменты к ней (отдельно каждый коммент), наверное. Возможность прикрепить статью? Возможность закрыть обсуждение к статье? Эм, есть что-то еще? |
| Автор: Opik 24.5.2006, 12:02 | ||||
| Aliance, поэтому я и говорю - определись сразу с функционалом - будет проще.
Твои статьи будут читать? уверен, что каждый будет ходить на сайт. Может им проще объединить несколько RSS лент и читать всё сразу? Это для удобства юзверей.
а вот таблицы тегов я не увидел...))) |
| Автор: Aliance 24.5.2006, 21:56 | ||||
С вашей помощью осилю, надеюсь. Сам никогда не писал/использовал.
|
| Автор: Opik 25.5.2006, 21:07 |
| Aliance, теги это несколько не то. http://olgapavlova.livejournal.com/128269.html |
| Автор: Aliance 25.5.2006, 22:39 |
| Хм, а как они могут быть полезны в данном случае? |
| Автор: Opik 26.5.2006, 20:42 |
| Aliance, Вот сайт в пример: http://news2.ru/ Справа есть и категории, и теги, по мне так очень удобно для навигации |
| Автор: Aliance 26.5.2006, 21:06 |
| Мне они будут не нужны, поэтому нужно будет писать с учетом их возможного отключения, если пишем в общем виде. И опять же, если пишем в общем виде - они должны быть не мои с потолка, а их нужно добавлять через админку, наверное. |