Bug Tracker: создание страниц (часть шестая)
Мы продолжаем разработку собственной системы отслеживания ошибок. И сегодня подробно рассмотрим создание страниц нашего приложения.
В предыдущих частях мы определились с типами страниц. Напомню, их всего два: страницы с общим перечнем багов (главная и страницы категорий) и страницы отдельных багов с комментариями.
Т.к. общее количество записей о багах может быть большим, мы будем использовать библиотеку pagination, входящую в состав фреймворка CodeIgniter, для вывода этого списка по частям.
Количество записей на одной странице мы задаем в файле конфигурации (application\config\config.php).
$config['bugs_per_page'] = 5;
Получить значение этого параметра можно так:
$this->config->item('bugs_per_page');
Теперь определимся с названиями методов контроллера и структурой URL.
По-умолчанию, URL в CodeIgniter имеют такой вид:
sitename.domen/index.php/имя_контроллера/имя_метода/параметр1/параметр2/…
Контроллер у нас будет называться bugtracker, а метод, показывающий страницы с багами – page. В результате получим URL с такой структурой:
…/bugtracker/page/номер_записи
В последнем сегменте адреса указываем номер первой записи на текущей странице. Кстати, это не id бага в базе данных, это его индекс в массиве с результатами поиска по БД.
Создаём контроллер (application\controllers\bugtracker.php)
Читать дальше »
Опубликовано в CodeIgniter, CSS, HTML, MySQL, PHP, Web разработка | Комментарии (28) »
Bug Tracker: изменения в проекте (часть третья)
Приветствую всех!
В этой статье продолжения рассказа о разработке собственной системы отслеживания ошибок. Предыдущие части вы найдете здесь и здесь.
В прошлый раз я обещал рассказать о формировании страницы со списком багов и комментариев. Но обсуждения предыдущих частей ясно показали, что в проект необходимо внести некоторые изменения. О них и пойдет речь сегодня.
База данных.
Первоначально я хотел максимально упростить структуру БД и перестарался. А именно: я решил хранить описания багов и комментарии к ним в одной таблице. В принципе, это возможно. Баги и комментарии имеют много одинаковых полей, и работать с такой таблицей было бы вполне реально.
Но я не учел, что при этом значительно усложняется код формирования страницы. Например, для создания списка багов с комментариями нужна рекурсивная функция с множеством проверок.
В общем, я решил, что лучше изменить базу данных сейчас, чем морочить себе голову потом
Новая структура базы данных выглядит следующим образом.
Читать дальше »
Опубликовано в Ajax, CodeIgniter, HTML, MySQL, PHP, Web разработка | Комментарии (33) »
Bug Tracker: установка фреймворка и создание базы данных (часть вторая)
Сегодня я продолжаю рассказывать о разработке собственной системы отслеживания ошибок. В прошлой статье только вкратце была описана общая идея и возможности, а также показан предварительный эскиз приложения.
Но прежде чем переходить к основной теме, хочу поблагодарить всех комментаторов и особенно AmdY, Big_Shark и Алексея Качаева за советы!
Первоначально я планировал доделать приложение полностью, и только потом опубликовать этот цикл постов. Но так получается даже лучше. Всегда есть шанс, что читатели найдут недостатки, и мне не придется переделывать все приложение чтобы их исправить
В прошлый раз с инструментами мы определились (используем PHP, фреймворк CodeIgniter, MySQL и jQuery).
Сейчас нам нужно их установить и настроить.
Читать дальше »
Опубликовано в Ajax, CodeIgniter, htaccess, JavaScript, MySQL, PHP, Web разработка | Комментарии (44) »
Создаем собственную систему отслеживания ошибок на PHP
Приветствую всех!
Это первая статья о создании полнофункционального web приложения, которое будет представлять собой систему отслеживания ошибок (bug tracking system).
О том, что представляют собой такие системы и какие они бывают можно рассказывать долго, но пока я ограничусь только определением из википедии.
Система отслеживания ошибок (англ. bug tracking system) — прикладная программа, разработанная с целью помочь разработчикам программного обеспечения (программистам, тестировщикам и др.) учитывать и контролировать ошибки (баги), найденные в программах, пожелания пользователей, а также следить за процессом устранения этих ошибок и выполнения или невыполнения пожеланий.
Почему именно баг трекер?
Очень хороший вопрос
Вообще-то, причин две.
Первая – это приложение не «hello world». И на его примере можно показать совместное использование PHP, JavaScript, AJAX, работу с базой данных и т.д.
Вторая – такое web приложение можно сделать достаточно простым (реализовать минимум функций), но в то же время вполне работоспособным. Ведь основная задача этого цикла статей – показать пример создания полноценного приложения, но в тоже время хотелось бы удержать его объем в каких-то разумных рамках
Постановка задачи.
Читать дальше »
Опубликовано в Ajax, CodeIgniter, JavaScript, MySQL, PHP, Web разработка | Комментарии (48) »
Создаем собственный сервис геотаргетинга

Некоторое время назад я рассказывал об использовании Яндекс.Карт и сервиса IPLoc, который позволяет определить географические координаты посетителя по его IP адресу.
К сожалению, этот сервис сейчас практически все время недоступен. И эта ситуация наглядно показывает, насколько опасно полностью полагаться на сторонние сервисы.
Конечно, проблемы бывают у всех. Но если не работает собственный ресурс, можно попытаться что-то сделать, а тут остается только ждать.
Кроме того, есть ещё одна отрицательная сторона использования сторонних сервисов – время отклика. На отправку запроса и получение ответа (даже очень короткого) уйдет некоторое время, и оно наверняка будет больше чем обращение к локальным ресурсам.
В общем, глядя на сложившуюся ситуацию, я начал искать локальную альтернативу IPLoc, т.е. готовую базу данных. Т.к. платные варианты меня не устраивали, то искать пришлось довольно долго
В результате я остановился на сервисе WIPmania.com. Он предоставляет и API для получения данных, и базу данных.
Читать дальше »
Опубликовано в HTML, MySQL, PHP, Web разработка | Комментарии (49) »
История одного мини теста или почему не стоит изобретать велосипед

О том, что кэширование может значительно увеличить скорость работы сайта, знают все. Но в некоторых случаях создание кэша – не самый лучший вариант.
Например, есть скрипт интернет-магазина и таблица в базе данных с описаниями товаров и их ценами. Посетитель видит форму с помощью, которой можно найти все товары, которые попадают в заданный диапазон цен.
Ясно, что создавать кэш для каждого сочетания цен будет неэффективно. Количество таких сочетаний измеряется десятками или сотнями тысяч.
Выполнить поиск в базе – не проблема. Но меня заинтересовал другой вопрос. Не будет ли быстрее искать данные в текстовом файле, а не базе?
Читать дальше »
Опубликовано в MySQL, PHP, Web разработка | Комментарии (12) »
Как получить информацию о базе данных

Если вы занимаетесь разработкой инструмента для работы с базами данных (вроде phpMyAdmin), то вам потребуется информация о созданных базах, их структуре, количестве таблиц и т.д.
Большинство учебников почему-то обходят эту тему. Но на самом деле здесь нет ничего сложного. Достаточно выполнить всего несколько запросов.
Получение списка баз данных. Всего один запрос:
SHOW DATABASES;
В результате получите названия всех существующих баз данных.
Используя этот список, можно определить структуру каждой из баз. Для этого нужно выполнить два запроса.
Читать дальше »
Опубликовано в MySQL, Web разработка | Комментарии (5) »
Уязвимости в MySQL и SQL запросах

Эта заметка – вольный перевод статьи Stefan Esser MySQL and SQL Column Truncation Vulnerabilities.
SQL-инъекции (SQL-injection) на сегодняшний день остаются наиболее обсуждаемыми проблемами безопасности web приложений.
В тоже время, другие уязвимости SQL запросов, например, связанные со слишком длинными входными данными, обычно игнорируются, хотя могут привести ко всем видам проблем безопасности.
Первая уязвимость касается движка MySQL
Читать дальше »
Опубликовано в MySQL, PHP, Web разработка, Безопасность | Комментарии (35) »





