Posts Tagged ‘решение’

Фильтрация вывода по белому списку

Среда, Сентябрь 3rd, 2008

Часто ли Вам, как web-разработчику, приходилось переживать за то, как вывести контент, оставленный пользователем, на страницу?
Думаю многие уже вооружались strip_tags() и htmlspecialchars(), но сегодня я пошел немного дальше. Теперь нет необходимости забирать возможность выводить любые теги, теперь можно просто указать какие теги допустимы к выводу, а так же какие атрибуты они могут содержать, ведь ни для кого не секрет, что onclick или onmouseover в безобидном теге DIV может творить чудеса :)
Под катом ссылка на скачивание и пример использования.
(more…)

Сделаем PHP строго типизированым

Понедельник, Сентябрь 1st, 2008

Данный пост посвящается любителям typehint’ов и строгой типизации, которой у PHP нет по определению.

копаясь недавно в мануалах по PHP, набрел на раздел о typehint’инге, и совершенно случайно полез в комментарии, где и нашел великолепное (хотя и тяжелое) решение для PHP5, как сделать язык строго типизированным. Под катом решение.
(more…)

decbin() в PHP

Пятница, Август 8th, 2008

Сегодня maxic задал интересную задачку :) Вернее не сама задача, а ее последствия.
Итак.
Имеем число 4294967295


$n = 4294967295;

Теперь попробуем найти его в двоичное значение:


echo decbin( $n );

Все нормально. Как и ожидали - 32 единички.

А если это число пришло к нам из БД? То оно будет представлено изначально в виде строки:


$s = '4294967295';

И если мы его попробуем преобразовать, то получим всего 31 единичку…
(more…)

Перечисления в PHP

Понедельник, Июль 7th, 2008

Часто ли вам приходилось сожалето о том, что в PHP нет перечислений как таковых?

Да, кто-то обходился конвенцией именования и получалось нечто вроде:

define( 'COLOR_RED', 'F00' );
define( 'COLOR_GREEN', '0F0' );
define( 'COLOR_BLUE', '00F' );

Или нечто вроде:

// данную переменную ЗАПРЕЩЕНО модифицировать
$colors = array(
    'red' => 'F00',
    'green' => '0F0',
    'blue' => '00F',
);

Но оба подхода имеют существенные недостатки:

  • В первом случае члены перечисления не образуют явной группировки
  • Во втором случае есть риск что переменная будет изменена
  • И в обоих этих случаях мы не можем делать проверку на тип переменной (type hinting)

Под катом предлагаю решение без вышеописанных недостатков…
(more…)

Zend Framework. Непонятная ошибка на *nix серверах (*RESOLVED*)

Суббота, Март 29th, 2008

Uncaught exception ‘Zend_Controller_Dispatcher_Exception’ with message ‘Invalid controller specified

Именно такая ошибка заставила меня потерять около трёх часов сегодня утром, при попытке перенести сайт на два *nix сервера. При этом хочу заметить что под виндой на двух машинах сайт работал нормально, а тут…

Вобщем три часа ни примели ни к чему и я уж было хотел забросить это дело и переписать архитектуру Zend_Controller’а в проекте с 0, но… Оказывается, что имена файлов для контроллеров должны быть ИСКЛЮЧИТЕЛЬНО с заглавной буквы. вот и все проблемы :) три часа впустую и такое простое решение…

права доступа к свойствам и методам

Четверг, Февраль 28th, 2008

Права доступа к свойствам и методам — это на первый взгляд всего лишь три слова: privat, protected и public. Но что скрывается за ними? Какие преимущества это дает в разработке? И как их правильно использовать? Здесь, как и во всех других аспектах программрования, без практики не разобраться…

Одна из трех основных концепций ООП — наследование (другие две: инкапсуляция и полиморфизм). Вобзем-то именно для нее и были реализованы права доступов. Основаная идея наследования: Дочерний объект, при наследовании (extend) родителя перенимает себе все родительские методы и свойства, а так же может обзавестись своими собственными. Понимая эту базу, можно перейти в всему что находится ниже… (more…)

try..catch VS if…else. Что, когда и почему?

Среда, Февраль 27th, 2008

Эволюция языков программирования приводит иногда к кардинальным изменениям в мировоззрении разработчиков. Такое случилось при появлении пятой ветки PHP, которая принесла новую объектную модель, новые наборы встроенных функций и новые методы обработки ошибок… (more…)

ошибка рендеринга в IE

Понедельник, Ноябрь 5th, 2007

на выходных опробовал новшество от Zend: Zend Neon Beta — IDE с привлекательным интерфейсом, кучей наворотов от Eclipse и Zend Studio, но правда и с жуткими тормозами :( проверяя анализатор синтаксиса HTML, сверстал простенькую страничку на DIV’ах. Все понравилось, все красиво, но когда дело дошло до проверки кроссбраузерности увидел (О ЧУДО!) что IE не смог правильно отрендерить вложенные дивы!
(more…)

заморочки в javascript

Четверг, Июнь 28th, 2007

…в следующий раз надо внимательнее читать мануал. оказывается переменные установленные через var нельзя удалить через delete
пример:

var a = 'test';
delete a;
alert(a); //alerts 'test'
-------------------------
a = 'test';
delete a;
alert(a); //alerts 'undefined'

а еще я не понимаю Лебедевский инклюд в яваскрипте. (more…)

дамп данных из MySQL

Вторник, Апрель 3rd, 2007

возникла задача реализовать на сайте возможность загрузки полного дампа данных из БД в файл клиента. MySQL средства аля SELECT … INTO OUTFILE не подходят по причине отсутствия (гипотетического) прав на сохранение… Решил писать свое лисапедо :) Вот что получилось:
(more…)