Прошу прощения, что не отписался сразу, отсутствовал.
Haron:
То-есть, каждый элемент (вне зависимости от того, каталог это, или страница) помещается в основную таблицу, для каждого элемента задается тип (каталог, страница), и согласно этому типу, обрабатываются данные, полученные из БД?
По поводу второй таблицы, не совсем понял. Просто указываем родительский элемент, или как? Указать родительский элемент можно и в основной таблице, зачем создавать вторую?
Stierus, и вас благодарю, что присоединились к нашей дискуссии!
Я вдумался еще до того, как начал этим заниматься, и поверьте, если бы у меня была возможность, я бы, с превеликим удовольствием, предложил заняться этим профессионалам. Более того, если мне удастся раскрутить проект, или привлечь инвестиции, я это сразу сделаю. А по поводу абсурда... Что я могу сказать, не без этого.
Я очень прошу вас, Stierus, и всех остальных форумчан, не отговаривать меня, а, если есть что посоветовать, дать дельный совет. В конце концов, опыт приходит с практикой, а до этого момента, многие "познают мир", в том числе, и на форумах.
1. Я в итоге сделал, md5(md5(solt).md5(pass).md5(solt)). Не без фанатизма получилось.
2. От преждевременной оптимизации отказываюсь. Убедили.
3. С адаптерами и шаблонами проектирования пошел разбираться. С ООП у меня тяжело, так что будет не скучно... (Добавление)
Мелкий пишет:
придёте к решению, что всё это надо выбросить и писать нормально
Собственно, уже пришел... Попробую начать с начала.
Основой проекта должна стать cms с функционалом схожим с функционалом доски объявлений. О дополнительных функциях, которые должны сделать проект уникальным, пока, говорить не имеет смысла. Расскажу, что должно быть в основной части. Примеры на авто, так проще.
По типам страниц:
1. Должны быть страницы каталога сортирующие товары по производителю (бмв/мерседес/ауди), наименованию товара (автомобиль/грузовик/мотоцикл) и сфере применения товара (бизнес авто/семейное авто/авто выходного дня).
2. Должна быть страница товара. На ней общая информация, технические характеристики, фотографии и прочая ерунда. Так же на странице товара должен быть список предложений (объявлений), по этому товару. Эти предложения содержат минимальную информацию 2-3 поля, но их очень много.
3. Должен быть поиск и расширенный поиск (примерно как на авто.ру).
4. Должен быть личный кабинет пользователя.
По функционалу:
1. На странице товара должны высвечиваться конкурирующие товары (предположим для бмв это будут мерседес и ауди соответствующих моделей).
2. Многоязычность. Языков очень много, почти все (боюсь представить, что там с кодировками начнется). Для каждой страны свой домен 3го уровня (как в википедии).
3. Функции только для пользователей (ну это банально).
4. Псевдостатические страницы на всех языках.
Вот как-то так должна выглядеть основа. Дальше весь функционал будет крепиться к этой основе.
Как лучше структурировать БД? Как лучше с многоязычностью быть? Как лучше организовать структуру движка? Вопросов море...
Если не сложно, подскажите, с чего начать, чтоб было по уму все? Задайте вектор правильного движения!
О sha1 прочитал. Я так понимаю, что принцип, по сути, такой же, как и у md5. Существенной разницы между ними, я найти не могу. Единственное, возможно использовать их совместно. Или я ошибаюсь?
Преждевременная оптимизация, возможно. Но нет ничего более постоянного, чем что-либо временное. Не хочется в итоге получить две килотонны медленного кода, который надо везде подправить. Возможно php не самый быстрый язык, но именно он мне в данной ситуации позволит относительно быстро добиться цели. И именно от него я сейчас намерен получить максимальную скорость.
Haron, DlTA, Champion, Мелкий, благодарю за ответы!
1. А что mysql_escape_string() пропустит? По идее, БД должна уметь обрабатывать любые данные, просто их надо предоставить в нужном виде, или я чего-то не так понимаю? Как там SQL-inj провести?
2. Слышал, что md5 лучше использовать с солью. Переделаю. А, на самом деле, какая реальная альтернатива md5?
3. Для буферизации, пока, рано. Тут вывода еще нет. Но обязательно учту, когда буду писать вывод.
4. Да, со структурой БД у меня беда. Переделаю.
5. Подключение к БД сознательно не стал выносить в отдельный файл, потому, что include() замедлит скорость работы скрипта.
6. Оправдано ли использование trim()... Думаю, что стоит оставить, потому, что пробелы по краям редко ставятся сознательно. Хотя... Лишняя функция - лишнее время.
7. $_SERVER['DOCUMENT_ROOT'] - это да. Переделаю.
8. По поводу комментариев уже сломал себе голову... Выносить блоки в функции - увеличить время выполнения сценария, а совсем без комментариев код слабо читабельный.
9. Хотелось бы, чтоб обошлось без этого, но хакерские атаки (не знаю, на сколько профессиональные, но заказные) скорее всего будут.
Да, по поводу библиотеки абстракций от БД... Опять же, она облегчает процесс написания, но замедляет выполнение сценариев. Да и приложения сторонних разработчиков, без крайней необходимости, я использовать не хочу.
Возникла необходимость написать движок для одного интернет-проекта, кода-то давно я немного кодил, но опыта, особо, не накопил. Трудность в том, что очень критична скорость работы скриптов и вопрос информационной безопасности.
Общий смысл файла index.php: 1. Определяем, авторизован ли пользователь (получаем права и прочую информацию, которая потом пригодится).
2. Определяем, язык на котором выводим контент (если пользователь авторизован, у него в настройках указан язык).
3. По URI находим контент в БД (получаем тип страницы и прочую информации, которая потом пригодится).
4. Подключаем модуль, соответствующий типу страницы (каталог, галерея, контент, ...).
Если не сложно, посоветуйте, пожалуйста, как оптимизировать код и, возможно, структуру движка.