© 2002 - 2009 Richter
Сайт работает на системе управления сайтом SBS "Web-Pro"
|
Система построения сайта SBS "Web-Pro"
Средство для создания и удобного управления сайтом, имеющее расширенные
по сравнению с CMS (Content Management System) характеристики.
Более 5 лет успешного использования.
Подробнее
|
Записки web-программиста
PHP и web-программированиеПри сохранении из textarea......нужно проверять get_magic_quotes_gpc(), например:
if (get_magic_quotes_gpc()) $settings = stripslashes($settings);
Если нужно, чтобы директивы PHP обрабатывались в файлах .html и .htm......то необходимо создать файл .htaccess. Действие этого файла будет распространятся на текущую и на все расположенные ниже директории. Файл должен содержать строку вида:AddHandler php-script .html .htm
HTTP-заголовки определены в RFC1945 (HTTP/1.0) и RFC2068 (HTTP/1.1)Если неверно работает сортировка в MySQL 4Проблему можно решить написанием запросов с "binary":
Это же справедливо и для строковых полей, по которым производится выборка.
Для MySQL 5+ нужно внимательно относиться к collation. Неверно загруженный дамп
вызовет ошибки выборки и сортировки, хотя тексты на сайте могут смотреться корректно.
Для корректной работы использовать phpMyAdmin не ниже 2.10.3.
Сравнение полей типа floatMySQL неверно работает (точнее так устроено) при сравнении float-полей - округляет. Поэтому вместо простого "field>value" надо использовать запрос типа:
Кириллица и сортировка в PHPНекоторые PHP-функции могут работать некорректно с кириллицей, если не выполнить установку локали (делается до вызова функции):setlocale (LC_CTYPE, "ru_RU.CP1251");
или setlocale (LC_CTYPE, "ru_RU.UTF-8");
К таким функциям относятся функции поиска, замены (preg_match, preg_replace, str_ireplace), а также запросы в базу данных. Примеры rewrite
Слеш в конце
Редирект на другой сервер с сохранением структуры страницOptions +FollowSymLinks RewriteEngine on RewriteRule (.*) http://www.example.ru/$1 [R=301,L]: IE "name" и "id" воспринимает как одно и то же...... при получении через getElementById().Замена с вставкой найденного фрагмента$content->body_f = preg_replace("/\[IMG(.*?)\]/", "-\\1---------", $content->body_f);timestamp в PHP только примерно до 2020 г.Поиск и замена найденного фрагмента через preg_replace()
$descr = preg_replace("/\[IMG (.*?) LEFT]/",
'<img src="'._MOBJ_I_.'?img=data/pictures/\\1" />', $tmp1[1]);
Настройка параметров PHP при работе в режиме FastCGIВсе настройки видаphp_flag параметр значениекоторые в других случаях прописываются в .htaccess, здесь необходимо указывать в php.ini в виде: параметр=значение; Удобный способ работы с датойВ PHP 5.2 появился класс для работы с датой - DateTime. Его удобно применять для модификации даты, а также вычисления возраста, например:
Как сделать выборку случайных записей из таблицыПростейший вариант:
НО такой вариант сильно грузит сервер, особенно при большом количестве записей,
т.к. происходит создание временной таблицы равной исходной таблице.
Можно предварительно подготовить массив идентификаторов и, используя его,
выбрать случайные записи (по одной) с использованием "UNION".
Такой вариант также может создать нагрузку, если нужно выбрать большое количество
записей или таблица содержит сотни тысяч записей.
Третий вариант предполагает замену "UNION" на:
Имеет место заметное ускорение работы.
Как разрешить доступ к сайту только с одного IP-адресаПишем в .htaccess:
Склонение слова в зависимости от числаВ $w1, $w2, $w3 нужно задать слова для разных случаев.
Как отключить выполнение PHP в папкеМожно добавить в .htaccess в нужной папке:
В некоторых случаях может понадобится отключения rewrite'а:
Простая работа с XML на PHPPHP 5 предоставляет удобный упрощенный способ работы с XML - SimpleXML. Поддержка включена по умолчанию. XML-данные можно прочитать из файла или из переменной, и они будут представлены как обычный объект PHP. Нужно учитывать, что верхний тег XML-данных не включен в объект, а является его именем (функция getName()). Есть несколько правил: - числовой индекс ("$xml_data->body->p[0]") обозначает конкретный элемент,- нечисловой индекс ("$xml_data->body->p['align]") обозначает атрибут элемента, - значение элемента выводится как текст БЕЗ потомков. Для вывода потомков следует использовать функцию asXML(). Следует помнить, что конструкция вида $xml_data->node выдаст объект даже, если этот узел содержит число. Это нужно учитывать при числовых операциях, делая преобразование intval(). Однако если есть несколько узлов с именем "node", то $xml_data->node будет являться массивом, и его можно перебрать через foreach(), тем не менее print_r() выдаст первое значение этого массива. Так можно получить всех потомков тега "body": $xml_data->body->children() Так можно получить атрибуты тега "a": $xml_data->body->p[0]->a->attributes(); Записать изменные данные можно, например, так: file_put_contents('filename.xml',$xml_data->asXML()); |