Все ленты — последние статьи

Развитие объектной ориентированности PHP

Одной из главных составляющих планируемой 5-й версии PHP станет Zend Engine 2.0, поддерживающий совершенно новую модель объектно-ориентированного программирования. Эта статья описывает развитие поддержки объектно-ориентированного программирования в PHP, включая новые возможности и изменения, запланированные в PHP 5.
Как всё это начиналось?

Подробнее: Развитие объектной ориентированности PHP

Долой процедурное программирование, даешь объектно-ориентированное!

Программисты — народ ленивый. Поэтому, когда дело доходит до работы, они сначала ищут в сети какой-нибудь программный продукт, который в той или иной степени удовлетворяет их потребности в решении поставленной задачи. Если программист пишет что-то на PHP, то одной из первых систем, которые он найдёт, будет PHP Nuke. Поигравшись с ним некоторе время, программист понимает, что вещь, конечно, хорошая, но слишком уж "коряво" написанная, тяжело адаптируемая к задачам, отличных от web-портала, да и перевод на русский язык сделан человеком, имевшем не более трёх очков по великому могучему.

Подробнее: Долой процедурное программирование, даешь объектно-ориентированное!

Ловля ошибок в PHP

На серъезных сайтах странно видеть, когда ошибки выводятся пользователю в браузер в самых неожиданных местах. Почему они выводятся? Ведь текст ошибок является информацией для дебага и предназначена для разработчика, а не для клиента. Пишем программу, делающую лог ошибок и прячем их от пользователя.

Кроме того, именно эта служебная информация обычно помогает злым хакерам ломать сайт. В качестве классического примера можно привести вариант с выводом запроса при ошибке: "you have an error in query near WHERE id= "… Большое спасибо. Подставляем после "WHERE id=…" строку "0 OR 1>0" и запрос выполняется по всей таблице. Если запрос на удаление, то…сами понимаете, весело =). Поэтому я всегда переменные в запросах заключаю в кавычки. На всякий случай…

Подробнее: Ловля ошибок в PHP

Работа с Cookies на PHP

Введение:

Откуда возник термин «cookie» никто достоверно не знает, хотя считается, что во времена зарождения Unix-систем где-то использовалось словосочетание Magic Cookies. Имелись в виду «квитанции» (token, ticket), которыми обменивались программы.

Cookie является решением одной из наследственных проблем HTTP протокола (HyperText Transfer Protocol). Эта проблема заключается в непостоянстве соединения между клиентом и сервером, как при FTP или Telnet сессии, т.е. для каждого документа (или файла) при передаче по HTTP протоколу посылается отдельный запрос. Включение cookie в HTTP протокол дало частичное решение этой проблемы. Иначе говоря, транзакция завершается после того, как браузер сделал запрос, а сервер выдал соответствующий ответ. Сразу после этого сервер «забывает» о пользователе и каждый следующий запрос того же пользователя считает новым пользователем.

Подробнее: Работа с Cookies на PHP

Маленькие хитрости Для просмотра значений массивов

Для просмотра значений массивов (в том числе $_POST, $_SESSION, $_SERVER) можно использовать достаточно простую команду, например,

echo LIST_CONTENTS($_POST)

Код функции LIST_CONTENTS приведен в листинге 1.

function LIST_CONTENTS($array,
$tab="    ",
$indent=0)
{
while(list($key, $value) = each($array))
{
for($i=0; $i<$indent; $i++) $current .= $tab;
if (is_array($value))
{
$reveal .= "$current$key : Массив: <br>$current{<br>";
$reveal .= LIST_CONTENTS($value,$tab,$indent+1)
."$current}<br>";
}
else $reveal .= "$current$key => $value<br>";
$current = NULL;
}
return $reveal;
}

Для разделения значений массива используйте следующий синтаксис:

LIST_CONTENTS(array $array, string $tab, int $indent);

здесь: $tab — строковая константа, используемая как табулятор, а $indent — число табуляторов для разделения значений.