Мы будем Вам признательны, если Вы поддержите проект Open SLAED и используя Ваши возможности, разместите наш пресс-релиз на страницах своих сайтов, проектов, форумов, блогов. Текст пресс-релиза, возможно, видоизменить под Ваш формат, не искажая смысл. Пресс-релиз можно взять на данной странице.
Strike - утилита разбивки дампа базы на меньшие части.
Если сервер Вашего хостинга не успевает принять за разрешенное хостером время полный backup-файл вашей базы данных, то предварительно разделите файл на части с помощью утилиты Strike. Утилита работает под Windows - дамп следует обрабатывать на своем компьютере, а не на сервере.
Вызов: strike.exe filename[.ext] [size_in_bytes]
Пример: strike.exe my_dump.sql 5000000 означает копирование файла my_dump.sql построчно в файлы my_dump_1.sql, my_dump_2.sql и т.д. каждый размером примерно 5 мегабайт.
Все строки из файла filename[.ext] копируются в файлы 'filename_1[.ext]', 'filename_2[.ext]' и т.д., длина каждого приблизительно равна size_in_bytes байтов.
По умолчанию размер новых файлов равен 20 мегабайтам. Подбирайте параметр size_in_bytes байт опытным путем по удовлетворению ограничениям Вашего хостера.
Проверьте начало и конец каждого созданного утилитой файла, по потребности заархивируйте, далее поочередно загружайте в базу хостера обычным для Вас порядком.
Usage: strike.exe filename[.ext] [size_in_bytes] All lines from 'filename[.ext]' will be copied onto files named as
'filename_1[.ext]', 'filename_2[.ext]', etc. every one will be about
'size_in_bytes' length. (Default 20Mbytes) (c) 2006 by sweeper[at]civfanatics.ru
Вы уже, наверное, в курсе, что группа разработчиков ядра PHP 6 встречалась в ноябре 2005 года в Париже. Это была захватывающая встреча, на которой разработчики обсудили развитие PHP со своей точки зрения. Прежде чем я начну свой рассказ о принятых решениях, вынужден предупредить – все что здесь перечислено, это не «100% решенные вопросы» и в окончательном релизе PHP 6 дела могут обстоять иначе. Конечно же, все эти моменты будут обсуждаться подробнее, но уже сейчас можно говорить о перспективах.
Окончательные релизы PHP 6 появятся не скоро, но профессиональные разработчики должны знать к чему готовиться...
Юникод
Поддержка юникода в настоящий момент может быть установлена только на уровне «per request», т.е. для каждого запрашиваемого файла. Это означает, что PHP придется сохранять варианты классов, имен методов и функций одновременно в таблице символов Unicode и в non-Unicode, что, конечно же, увеличивает количество потребляемых ресурсов. Разработчики решили сделать настройку юникода на уровне всего сервера, а не запроса. Отключение поддержки юникода, если таковая не требуется, может увеличить производительность строковых функций до 300% и приложений в целом до 25%. Вынос настроек в php.ini позволит снять заботу о юникоде с разработчика и переложить ее на администраторов хоста.
Если вы самостоятельно собираете PHP и несете всю ответственность за ваши серверы, то вам будет полезно знать, что для PHP 6 потребуются библиотеки ICU (в зависимости от того, будет ли нужен Unicode или нет).
Register Globals уйдут в прошлое
Попрощайтесь с этой настройкой, она будет окончательно убрана. Такой настройки больше не будет в php.ini и если вы ее внесете, то получите ошибку уровня E_CORE_ERROR. Это означает, что PHP 6 наконец-то завершит эру скриптов PHP 3. Это серьезный, но очень нужный шаг.
Magic Quotes будут исключены
Опция magic quotes будет так же исключена из PHP и при попытке включения такой настройки, «выскочит» ошибка E_CORE_ERROR. Это повлияет на magic_quotes, magic_quotes_sybase и magic_quotes_gpc.
Больше не будет Safe Mode
Это понравится тем, кто хостится на серверах с обязательным включением Safe Mode. Теперь, включение опции будет вызывать ошибку E_CORE_ERROR. Причиной для этого становится механизм посыла «сигнала опасности», который делает PHP более безопасным. Сохранится лишь open_basedir.
'var' будет полным алиасом 'public'
Var используется в классах PHP 4. В объектном подходе PHP 5, употребление var вызывает ошибку уровня E_STRICT. В PHP 6 предупреждение об ошибке будет устранено и var станет полным синонимом public. Это вполне нормальное решение, однако, те, кто «подогнал» свои скрипты под PHP 5, сделали в этом плане лишнюю работу.
Возврат по ссылке вызовет ошибку
И '$foo =& new StdClass()' и 'function &foo' теперь вызовут ошибку уровня E_STRICT.
Будет убрана совместимость с zend.ze1
Ze1 всегда пытался поддерживать старое поведение PHP 4, но не всегда «работал на 100%», поэтому в шестой версии PHP он будет полностью исключен.
Поддержка Freetype 1 и GD 1 будет убрана
Поддержка обоих (очень-очень старых) библиотек будет убрана.
dl() останется только в SAPI
Каждую функцию SAPI нужно будет регистрировать отдельно и только CLI и embed SAPI будут работать с этого момента. В других вариантах dl() работать не будет.
FastCGI всегда включена
FastCGI код будет «вылизан» и станет включенным по-умолчанию для CGI SAPI. При этом, поддержку FastCGI будет невозможно отключить.
Старые названия глобальных массивов будут удалены
Помните старые массивы HTTP_*_VARS? Если вы еще не начали использовать $_GET и $POST, то начните делать это прямо сейчас, потому что в PHP 6 эти массивы будут вызывать E_CORE_ERROR.
Перемещения расширений
Расширения XMLReader и XMLWriter войдут в дистрибутив и станут доступны по умолчанию. Расширение ereg для работы с регулярными выражениями переедет в PECL (т.е. будет удалено из PHP). Это означает, что PCRE будет по умолчанию недоступно и выключено. Такой шаг делается для включения нового расширения для работы с регулярными выражениями, основанными на ICU. Чрезвычайно полезное расширение Fileinfo будет включено в дистрибутив и доступно по умолчанию.
Дополнения к движку PHP
64 битный целочисленный тип данных
В движок будет добавлен новый тип данных -int64. Он будет использоваться поумолчанию для integer.
Goto
Никаких команд goto не будет добавлено. Однако, команда break расширится статической меткой, поэтому будет возможно написать break foo и это перекинет на метку foo: в вашем коде.
ifsetor()
Похоже, что мы не увидим эту функцию, что обидно. В операторе ?: можно будет опускать один параметр, что позволит писать так: "$foo = $_GET['foo'] ?: 42;" (т.е. если foo является истиной, то $foo будет равно 42). Это сэкономит немного кода, однако будет не так читаемо, как при использовании ifsetor().
foreach для многоуровневых массивов
Это отличное новшество – вы сможете проходить с помощью foreach по нескольким уровням массива, к примеру "foreach( $a as $k => list($a, $b))".
{} против []
Сейчас вы можете использовать и {} и [] для обращения к строковым индексам. Однако, запись {} уже сейчас вызовет E_STRICT в PHP 5.1 и будет полностью устранена в PHP 6. К тому же, [] частично заменят substr и array_slice и вы сможете использовать "[2,]" для получения символов от второго и до конца строки. Очень удобно.
Изменения в объектном стиле
Связка static
Будет добавлено новое ключевое слово для доступа к последующей связке – static::static2(), что позволит управлять static во время выполнения.
Пространства имен
Этот момент остается нерешенным и по сей день. Мой совет – не задерживайте дыхание.
Типизированные значения при возврате из функций
Разработчики высказались против типизации, потому как это «не в стиле PHP». Однако такая возможномть будет добавлена, но не решен вопрос ее синтаксиса. В любом случае, это будет полезная возможность.
Вызов динамческих функций как статических приведет к E_FATAL
Сейчас вы можете вызывать статические и динамические методы не обращая внимание на то, статические они или динамические. Вызов динамической функции как статической, вызовет E_FATAL.
Добавления в PHP
APC войдет в ядро
Работа APC с байткодом будет включена в основную поставку PHP в качестве стандарта, но, вероятно, не будет активизирована по-умолчанию, но результаты ее работы будут стимулировать хостеров включать эту опцию.
Hardened PHP патч
Этот патч выполняет большое количество дополнительных проверок на безопасность. Разработчики тщательно изучают этот патч и некоторые элементы найдут свое место в PHP: защита от разделения HTTP-запроса, allow_url_fopen будет разделена на две: allow_url_fopen и allow_url_include. Первая опция будет по-умолчанию включена, а вторая – отключена.
E_STRICT войдет в E_ALL
Вау, это серьезная штука! Сообщения об ошибках наконец-то войдут в E_ALL по умолчанию. Это демонстрирует старания разработчиков научить «лучшей практике программирования» посредством сообщений «Эй, ты делаешь неправильно!».
Прощайте asp-тэги <%
Будет удалена поддержка ASP-тэгов, но останутся короткие PHP-тэги <? ?>.
Заключение
PHP 6 движется в интересном направлении – разработчики PHP начали направлять программистов на правильный путь, вместо того чтобы упреждать «так делать не надо, потому что это устарело». Категоричное искоренение таких моментов как register globals, magic quotes, long arrays, {} string indexes и call-time-pass-by-references наконец-то заставит программистов «вычистить» свой код. Плохо ли это? Я так не думаю, но все это сделает переход на PHP 6 еще более медленным, чем мы наблюдаем с PHP 5 (который итак происходит ужасно!).
Официальная информация: http://www.php.net/~derick/meeting-notes.html
Оригинал статьи: http://www.corephp.co.uk/archives/19-Prepare-for-PHP-6.html
Автор: Richard Davey
Перевод: Андрей Олищук
Источник: http://phpclub.ru
В связи с обновлением форума до версии 2.0.16 авторами проекта было решено выпустить сверхплановую версию системы SLAED 1.3. Как правило, изменения были связаны, с повышением безопасности форума, а так же модулей системы. Так же были исправлены все неточности и выявленные до сих пор ошибки. Изменениям были подвержены почти все модули системы.
С данного момента система будет, распространятся с полностью открытым кодом по лицензии GNU/GPL, кодирование и прочее закрытие кода в следующих релизах так же не планируется.
Скачать новую версию SLAED Version 1.3 можно как всегда в отделе файлов.
В прошлой главе мы познакомились с основами модуля mod_rewrite. В примере, который был рассмотрен, мы использовали конструкцию, которая в буквальном смысле означает следующее: «Если кто-то пытается получить доступ к файлу .htaccess, выдается ошибка, сообщающая, что доступ к файлу запрещен».
Это «правило» глобально, то есть каждый получит указанное сообщение об ошибке. Напомню, что mod_rewrite является модулем, который предоставляет «основанный на правилах механизм динамического изменения запрашиваемых URL-ов».
Мы можем ограничивать «правило» при помощи различных «условий правила». «Правило» будет выполнено только в том случае, если перед ним будет встречен ряд условий.
Синтаксис: условие должно предшествовать правилу!
Возьмем еще один пример (запись в файле .htaccess):
Назначение первых трех записей было подробно разобрано в первой части публикации. Их функция - включение «движка перезаписи», то есть самого модуля.
Последние две строки запрещают доступ поисковому роботу под кодовым названием «EmailSiphon» (имеется ввиду имя юзер-агента). Данный робот является сборщиком почтовых адресов с различных веб страниц.
Проверочная строка – переменная сервера, которая может быть записана в общей форме: «% {ИМЯ_ПЕРЕМЕННОЙ}».
Образец условия – регулярное выражение. Для более полного понимания темы стоит рассмотреть регулярные выражения как класс.
Регулярные выражения – это механизм, позволяющий задать шаблон для строки и осуществить поиск данных, соответствующих этому шаблону в заданном тексте. Кроме того, дополнительные функции по работе с такими выражениями позволяют получить найденные данные в виде массива строк, произвести замену в тексте по шаблону, разбиение строки по шаблону и т.п. Однако главной их функцией, на которой основаны все остальные, является именно функция поиска в тексте данных, соответствующих шаблону (образцу), описанному в синтаксисе регулярных выражений.
Регулярные выражения подобны маленькому, компактному языку программирования со своими правилами.
Например, регулярное выражение:
заменит строку «abc», на строку «xyz» во всем тексте.
Вот краткий обзор наиболее важных элементов с некоторыми примерами:
. (точка) - текст (любой символ)
| - чередование (то есть/abc|def/)
* - квантификатор (разрешено любое число)
^ $ - якоря строки
s - оператор (string1 заменить на string2)
g - модификатор (искать по всему тексту)
Регулярные выражения конструируются с помощью этих элементов и других «обычных» символов. Они не являются отдельным языком, а используются другими средствами, например языками программирования типа Perl или PHP, а также текстовыми редакторами (Emacs).
Если говорить о связи регулярных выражений и модуля mod_rewrite, то они используются в директивах RewriteRule и RewriteCond.
«^» обозначает начало строки. Из этого следует, что UserAgent должен начинаться со строки «EmailSiphon» и ни с чего другого («NewEmailSiphon», например, не работал бы).
Но, поскольку данное регулярное выражение не содержит символ "$" (якорь конца строки), UserAgent мог бы быть, например, «EmailSiphon2».
Последняя строка нашего примера:
определяет, что именно нужно делать, когда робот запросит доступ.
Регулярное выражение «^.*$» означает: «Доступ ко всем файлам запрещен».
Точка «.» в регулярном выражении – мета символ (подстановочный знак), означающий любой случайный символ.
«*» означает то, что строка может встречаться неограниченное количество раз. В этом случае, независимо от имени запрошенного файла, будет выдана ошибка.
«EmailSiphon», конечно, не единственный почтовый сборщик. Другой известный член этого семейства - «ExtractorPro». Допустим мы хотим запретить доступ и этому роботу. В таком случае нам необходимо еще одно условие.
Теперь файл .htaccess будет выглядеть так:
Третий аргумент [OR] (в первой строке RewriteCond) называется «флагом». Существуют два возможных флага:
NC – не учитывать регистр букв.
OR – означает «или следующее условие».
Флажок NC позволяет игнорировать регистр букв в искомом образце. Например:
Эта строка определяет, что и "emailsiphon" и "EmailSiphon" будут признаны как идентичные выражения.
Вы можете использовать сразу несколько флажков, разделяя их запятыми.
Нет никаких ограничений по числу условий. Таким образом, Вы можете блокировать 10, 100, 1000 или более известных почтовых сборщиков. Определение этих 1000 условий – просто вопрос загрузки сервера и прозрачности файла «.htaccess».
В вышеупомянутом примере используется глобальная переменная «HTTP_USER_AGENT». Существуют также другие переменные: REMOTE_HOST, REMOTE_ADDR
Например, если Вы хотите заблокировать паука пришедшего с www.site.ru, Вы можете использовать глобальную переменную «REMOTE_HOST» таким образом:
Если Вы хотите заблокировать определенный IP адрес, условие будет выглядеть так:
В регулярном выражении по проверке точного и полного IP адреса нужно использовать начальные и конечные якоря.
Также можно исключить целый диапазон:
Этот пример показывает, как можно заблокировать диапазон IP адресов с 212.37.64.0 по 212.37.64.255.
А вот маленькая задачка для проверки приобретенных знаний (решение будет дано в следующей части):
Внимание, вопрос!
Если мы пишем в регулярном выражении «^212.37.64» вместо «^212.37.64.» (с точкой в конце), то даст ли это тот же самый эффект, и будут ли исключены те же самые IP адреса?
До сих пор мы использовали простой RewriteRule, который генерирует сообщение об ошибках. В третьей части публикации мы проанализируем, как можно использовать RewriteRule для переадресации посетителей к определенным файлам.
Данный модуль позволяет разместить на Вашем сайте каталог файлов. Многоуровневая структура размещения информации обеспечивает простоту поиска для посетителей сайта, а также легкость администрирования.
Интерфейс пользователя
Списки файлов делятся на категории и подкатегории по различным признакам для удобства поиска. Для пользователей доступна сортировка файлов по дате добавления («Новые файлы») и количеству скачиваний («Популярные файлы»). Дополнительно новые файлы снабжаются цветной пиктограммой, выделяющей их среди остальных. Каждый файл может быть снабжен пояснительной информацией, а также для каждого ведется учет комментариев, количества скачиваний и текущего рейтинга (на основании оценок пользователей).
Администрирование
Функции главной панели
Добавление новой категории
Для добавления новой категории нажмите на ссылку «Файлы» на панели управления модулями, в появившемся ниже поле впишите название категории, в поле ниже введите краткое описание категории и нажмите «Добавить». Новая категория добавлена.
Добавление подкатегории в существующую категорию
Для добавления подкатегории нажмите на ссылку «Файлы» на панели управления модулями. В появившемся ниже поле впишите заголовок подкатегории, в поле ниже введите её краткое описание, из выпадающего списка ниже выберите категорию, в которую будет входить новая подкатегория и нажмите «Добавить».
Редактирование существующей категории (подкатегории)
Чтобы отредактировать категорию (подкатегорию) нажмите на ссылку «Файлы» на панели управления модулями. Из появившегося ниже списка выберите категорию (подкатегорию), которую собираетесь изменить и нажмите «Редактировать». После перезагрузки окна в форму введите новое название и/или описание категории (подкатегории), для подкатегорий также можно изменить родительскую категорию. Так же в этом окне можно удалить ненужную категорию (подкатегорию). Внимание: При удалении категорий (Подкатегорий) удаляются все файлы в ней, а так же все вложенные категории и файлы в них!
Добавление нового файла
Для добавления нового файла нажмите на ссылку «Файлы» на панели управления модулями. В поле «Заголовок» формы «Добавить файл» впишите название файла. Выберите категорию (подкатегорию), в которой будет располагаться новый файл (в противном случае файл будет размещен на главной странице модуля Files). После этого в соответствующих полях введите описание файла, имя его автора, E-Mail и ссылку на домашнюю страницу автора. Для загрузки файла нажмите кнопку «Обзор» и выберите нужный файл, для размещения файла по ссылке на скачивание введите в соответствующее поле URL в формате http://some_site/some_folder/some_file.zip. Ниже впишите версию файла, а также размер (для файлов, размещенных по ссылке).
Перемещение файлов между категориями (подкатегориями)
Для перемещения файлов из одной (под)категории в другую нажмите на ссылку «Файлы» на панели управления модулями. В форме «Перемещение файлов» выберите (под)категорию, из которой Вы хотите переместить файлы и (под)категорию назначения, после чего подтвердите свой выбор, нажав «Переместить файлы».
Правка/удаление файлов
Для правки или удаления файла зайдите администратором в модуль Files с главной страницы Вашего сайта. Выберите файл, который собираетесь отредактировать или удалить. Нажмите на соответствующую выбранному файлу ссылку «Удалить» или «Править». Для правки появится форма, аналогичная форме для добавления нового файла. Отредактируйте нужные поля и нажмите «Сохранить изменения», также из этой формы Вы можете проверить ссылки на файл и его изображение.
Функции панели «Новые файлы»
Все файлы (ссылки на файлы) добавленные пользователями, но не размещенные на сайте располагаются в таблице доступной администратору по ссылке «Новые файлы» из панели управления модулем Files.
Удаление нового файла
Для удаления добавленного пользователем файла в поле «Функции» напротив выбранного файла нажмите на ссылку «Удалить». Во избежание случайного удаления у Вас будет запрошено подтверждение на удаление.
Редактирование/размещение добавленного пользователем файла
Для редактирования/размещения добавленного пользователем файла в поле «Функции» напротив выбранного файла нажмите на ссылку «Редактировать». В появившейся форме Вы можете изменить параметры файла, а также выбрать (под)категорию для его размещения. Внимание: Не размещайте на своем сайте непроверенные файлы, а также файлы, защищенные авторскими правами!
Функции панели «Недоступные файлы»
Все файлы (ссылки на файлы) отмеченные пользователями как недоступные для скачивания, располагаются в таблице доступной администратору по ссылке «Недоступные файлы» из панели управления модулем Files.
Редактирование недоступного файла (ссылки на недоступный файл)
Редактирование недоступного файла (ссылки на недоступный файл) аналогично редактированию в панели «Новые файлы».
Игнорирование недоступного файла (ссылки на недоступный файл)
Чтобы проигнорировать сообщение пользователя о недоступном для скачивания файле нажмите на ссылку «Игнорировать» в поле «Функции» напротив выбранного сообщения.
Функции панели «Конфигурации»
Изменение настроек модуля «Файлы»
Данная функция позволяет осуществить индивидуальную настройка модуля «Файлы» под Ваши нужды, изменяя следующие строки:
Папка для временного размещения файлов.
В ней находятся файлы, загруженные на сервер пользователями, до проверки администратором. Помните, что для разрешения записи права на эту папку должны быть установлены CHMOD 777.
Папка для постоянного размещения файлов.
В ней находятся файлы, проверенные администратором, а также добавленные им, эти файлы доступны для скачивания.
Размер файла, разрешенный к загрузке
Максимальный разрешенный для загрузки на сервер размер файла (в байтах).
Количество ссылок при выводе подкатегорий
Максимальное количество ссылок на подкатегории, выводимых под названием соответствующей им категории на главной странице модуля Files.
Количество колонок при выводе категорий
Максимальное число колонок, в которых располагаются категории, на главной странице модуля Files.
Количество файлов на страницу
Максимальное количество названий файлов, выводимых на одной странице.
Разрешить комментарии к файлам
Разрешает/запрещает пользователям оставлять свои комментарии к файлам.
Разрешить выставлять оценки
Разрешает/запрещает пользователям оценивать файлы.