Мой профиль...

Search This Blog

Showing posts with label программирование. Show all posts
Showing posts with label программирование. Show all posts

Friday, June 4, 2010

Миграция на php 5.3.x

Переход на PHP 5.3.x.


Устаревшие функции в PHP 5.3.x. Deprecated функции:


• call_user_method() - используем теперь call_user_func()
• call_user_method_array() - используем теперь call_user_func_array()
• define_syslog_variables() - по умолчанию и далее выключен
• dl()
• ereg() - используем теперь preg_match()
• ereg_replace() - используем теперь preg_replace()
• eregi() - используем теперь preg_match() с модификатором 'i'
• eregi_replace() - используем теперь preg_replace() с модификатором 'i'
• set_magic_quotes_runtime() / magic_quotes_runtime() - будут ликвидированы
• session_register() - используем суперглобальный массив $_SESSION
• session_unregister() - используем суперглобальный массив $_SESSION
• session_is_registered() - используем суперглобальный массив $_SESSION
• set_socket_blocking() - впредь используйте stream_set_blocking()
• split() - используем теперь preg_split()
• spliti() - используем теперь preg_split() с модификатором 'i'
• sql_regcase()
• mysql_db_query() - впредь используйте mysql_select_db() и mysql_query()
• mysql_escape_string() - впредь используйте mysql_real_escape_string()

E_DEPRECATED в php.ini

Кроме того, ряд директив в PHP.INI постигла такая же участь, они будут теперь выбрасывать E_DEPRECATED предупреждения при активировании:
• define_syslog_variables
• register_globals
• register_long_arrays
• safe_mode
• magic_quotes_gpc
• magic_quotes_runtime
• magic_quotes_sybase

Отключенные возможности

Так же больше не используются следующие возможности:
• Передача в переменную параметра по ссылке в new
• Вызов call-time (функцииб методы классов) по ссылке
• Использование {} для указания смещения внутри строки. Обращайтесь к строке как к массиву, используя []

Зарезервированные слова

Следующие 2 слова теперь являются зарезервированными:
• GOTO
• NAMESPACE

Временная зона

В новой версии PHP обязательно необходимо указать в конфигурационном файле php.ini параметр date.timezone иначе интерпретатор будет отображать Вам предупреждения при работе с любой функцией даты или времени. Например, можно указать так:
date.timezone = Europe/Kiev

Публичные методы

Начиная с 5.3 методы указанные ниже не могут быть статичными и обязаны быть публичными:
• __get()
• __set()
• __isset()
• __unset()
• __call()

Monday, December 21, 2009

Что такое ЧПУ? - HOWTO User Friendly URL?

Что такое ЧПУ?

ЧПУ (англ. User Friendly URL) — веб-адреса, удобные для восприятия человеком (а также систем и методов построения таких адресов). Является аббревиатурой от словосочетания «человекопонятный урл» (где «урл» — жаргонное обозначение URL).

Классический подход

Обычно параметры запроса (например, ID нужной страницы) передают сайту через GET-запрос, то есть указывая в URL после вопросительного знака в виде:

* /acticles.php?tag=summer&action=list — просмотр списка статей с меткой summer (лето).
* /news.php?topic=4&year=2003&month=10&sort=1 — отсортированные новости по теме 4 за октябрь 2003.
* /catalogue.php?sect=11&kind=6&manuf=63 — товары производителя 63 типа 6 в отделе 11.

Это вполне понятно и естественно для разработчиков и программ, но не совсем понятно и не удобно для посетителей. Даже если числовые идентификаторы полностью заменить на человеческие слова, то адрес всё равно останется очень громоздким.

Также адреса часто становятся привязанными к технической реализации, так как, например, в «чистом» PHP часть URL до вопросительного знака указывает на файл скрипта.

Концепция ЧПУ

Концепция ЧПУ предполагает максимально лаконичные и интуитивно понятные адреса, которые показывают естественную для человека логическую структуру данных на сервере, а не её программный интерфейс с модулями и параметрами. Структуру обычно представляют в виде иерархии как в обычной файловой системе, к которой привык пользователь.

Те же самые примеры, но с ЧПУ будут выглядеть уже так:

* /articles/tags/summer/ — статьи по меткам, метка «лето».
* /news/sport/2003/10/ — новости спорта, 2003 год, октябрь.
* /catalogue/light/bulbs/GE/ — каталог товаров, отдел «Свет», лампочки, производитель GE.

Или, даже так:

* /статьи/метки/лето/ — статьи по меткам, метка «лето».
* /новости/спорт/2003/10/ — новости спорта, 2003 год, октябрь.
* /каталог/свет/лампочки/GE/ — каталог товаров, отдел «Свет», лампочки, производитель GE.

Достоинства для посетителя очевидны:

* подобные адреса очень легко запомнить;
* можно продиктовать URL по телефону;
* чтобы перейти на уровень вверх достаточно стереть нужную часть пути;
* если человек уже был на вашем сайте и набирает адрес вручную, то он сразу может обратиться к нужному ему документу глядя на URL’ы предыдущих запросов.

Недостатки:

* увеличение затрат ресурсов сервера для большинства реализаций;
* усложнение настройки сайта в связи с необходимостью вмешиваться в конфигурационные файлы веб-сервера.

Реализация

Apache

Для веб-сервера Apache существует мощный модуль mod_rewrite, который включается в стандартный дистрибутив. Он обладает массой возможностей интерпретации URL перед обработкой необходимым модулем.

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

RewriteEngine on
RewriteRule ^article/([0-9]+)/? article.php?id=$1 [L]

Первая строчка включает mod_rewrite. Во второй указывается, что веб-сервер при запросе URL вида /article/450/ должен обратиться к /article.php?id=450 .

Обработка URL в собственном скрипте

Разработчик может вручную обработать URL и на основе него вызвать какую-то функцию. Для этого, чаще всего, нужно с помощью mod_rewrite направить все запросы одному скрипту для обработки. Для этого нужно добавить в файл .htaccess следующее содержимое:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]

Скрипт index.php уже будет брать URL из переменной REQUEST_URI (в PHP из $_SERVER['REQUEST_URI']) и на основе каких-то настроек запускать необходимый код.

Случаи, когда введение ЧПУ не оправдано

* В случаях когда адрес не виден пользователю (например, AJAX), так как ресурсы сервера будут тратиться на разбор URL зря.
* Если страница предусмотрена для просмотра ограниченным количеством пользователей (например, страницы администрирования, C-панели) и не предусматривается посещение страницы поисковыми ботами.
* Если посещение страницы предполагает обязательное использование введенных параметров (например, формы регистрации, данные для вычисления скриптом и т.п.)

Thursday, November 27, 2008

Панель сохранения, печати и т.д. картинки в ИЕ - IE img

Многих разработчиков, наверное, раздражает то, что в IE при наведении курсора на картинку в левом верхнем углу картинки появляется панель с кнопочками. Так вот. Есть два способа ее отключить.

1. Глобальный. Указать мета-тег
<meta http-equiv="imagetoolbar" content="no" />

2. Локальный. У изображения, для которого не нужно показывать панель, указать аттрибут galleryimg="no".

Релевантные посты...

Related Posts with Thumbnails