Архив категории: ‘Web разработка’

Преодоление ошибки Warning: include() [function.include] в PHP

Thursday, 21 May 09 в 3:14

phpПока пишу объемную статью, небольшое полезное сообщение для разработчиков. Разбирался как-то с ошибкой PHP при попытке установить один скрипт и случайно попал на англоязычный блог, где очень подробно, доходчиво было рассказано о проблеме. Точнее это даже не ошибка, а предупреждение, но скрипт все равно не срабатывал.

Итак, если ваша PHP установка на сервере достаточно защищена и отключено URL file-access, а вы пытаетесь вызвать файл через функцию include с использованием абсолютного пути или обращаетесь к удаленному файл,у то столкнетесь с данной проблемой. Например код:

<?
include ("http://www.somedomain.com/file.php");
?>

Приведет к тому, что вы увидите следующие ошибки PHP при просмотре страницы в браузере:

Warning: include() [function.include]: URL file-access is disabled in the server configuration in /home/user/public_html/page.php on line xx

Warning: include(http://www.somedomain.com/file.php) [function.include]: failed to open stream: no suitable wrapper could be found in /home/user/public_html/page.php on line xx

Warning: include() [function.include]: Failed opening ‘http://www.somedomain.com/file.php’ for inclusion (include_path=’.:/usr/lib/php:/usr/local/lib/php’) in /home/user/public_html/page.php on line xx

В PHP 5 функция include для удаленных файлов отключена по умолчанию, и, если ваш сервер использует другую версию PHP, но имеет безопасную установку, вы также столкнетесь с этой ошибкой.

Причина отключения PHP функции include для файлов достаточно простая – это позволит избежать межсайтовых скриптовых (XSS) атак. Это метод, с помощью которого кто-то из недоброжелателей может внедрить свой собственный вредоносный код в ваш, что, как правило, делается для проведения DoS и DDoS атак, а они в свою очередь приводят к падению сервака. Еще есть включения (заражения) в коде страницы, которые содержат и выводят на экран компьютера сообщения мол “такие-то хакеры сломали ваш сайт” вместо стандартного содержимого страницы.

Поэтому если вы собираетесь попросить хостера разрешить эту функцию для удаленных файлов, хорошенько подумайте еще разок.

С другой стороны эта ошибка может быть преодолена с помощью некоторых лучших решений в вашем коде для вызова удаленных файлов. Если вы хотите включить удаленный файл, я бы рекомендовал использовать вам функцию file_get_contents(). Пропишите ее вместе с некоторой переменой в своем коде:

<?
$a = file_get_contents("http://www.somedomain.com/file.php");
echo ($a);
?>

Если вы хотите включить файл, который уже находится на вашем сайте, используйте относительные пути, а не абсолютные:

<?
include (file.php);
?>

Есть еще одно альтернативное решение, которое еще проще записать с помощью функции require_once без использования всяких сторонних переменных:

<?
require_once($_SERVER['DOCUMENT_ROOT'].'file.php');
?>

Именно это решения я использовал для себя, причем удачно – скрипт заработал. В общем, программируйте правильно:) и ошибок не будет. Возможно, у вас есть что добавить ибо заметка достаточно старая, хотя PHP5 все еще актуально, насколько я понимаю.

P.S. Открылась новая система ссылок, где можно прикупить ссылок для своих англоязычных проектов.
Чистая обувь – лицо компании. Машинки для чистки обуви в Москве, можно и в аренду.
Все салоны красоты Украины – специально для женщин.
Для них также женский журнал – интересно и актуально.

Понравился пост? Подпишись на обновления блога по RSS для блоггеров и вебмастеровRSS, RSS для блоггеров и вебмастеровEmail или RSS для блоггеров и вебмастеровtwitter!

Скрипты для импорта RSS (через Javascript и php)

Tuesday, 21 Apr 09 в 0:42

скрипт rss импортТехнология RSS – штука очень полезная и интересная. Помнится как-то давным-давно я вычитал информацию, что Google ну очень любит сайты, где контент не просто статический, а более-менее как-то обновляется. То ли это влияло на скорость и частоту индексации, то ли еще на что-то. Не знаю, правда, насколько эта информация актуальная сейчас, но в любом случае RSS могут здорово разбавить сайт. Да, там есть ссылки, на источник новостей, но это своего рода благодарность за постоянно обновляемые новости. Сейчас полно всяких систем, которые обмениваются трафиком подобным образом – устанавливаются своеобразные информеры. В сети даже можно найти сайты, контент, которых в большей степени состоит из подобных блоков, которые берутся со сторонних источников. Я лично, не сторонник такой идеи, хотя, возможно, она может дать интересные результаты.

Но суть поста не в этом. Любая более-менее продвинутая система управления сайтом (CMS) имеет свой модуль для импорта новостей в формате RSS, но что делать, если у вас имеется собственноручно написанная админка или вообще статический сайт. Собственно подобная задача у меня сегодня и возникла. После небольшого серфинга я нашел 2 решения для импорта RSS, которыми сейчас и поделюсь.

RSS – скрипт РУ

Импортирует новости с помощью JavaScript. Это, по сути, является главным его преимуществом, поскольку нет никаких требований к хостингу, например, наличие PHP. Можно добавить несколько лент на одну страницу, внешний вид легко настраивается (через CSS). Установка также не требует особых временных затрат и глубоких познаний.

Идем на сайт и в специальной форме вводим адрес требуемого RSS потока.

импорт rss новостей скрипт

После этого на странице отобразится информация из фида (типа все работает корректно), плюс ниже будет дан код, который потребуется вставить на сайт. Он состоит из 2-х частей – в head добавляем стили, а непосредственно код вызова скрипта в нужное место своего сайта.

К сожалению, в процессе тестирования данный метод мне не подошел, так как он не совместим с кодировкой сайта utf-8. Помнится извечная проблема – очень много русскоязычных ресурсов до сих пор используют windows-1251 и в ней же отдают RSS поток. Поэтому при импорте на свои проекты получаю кракозябры. Теоретически можно этот «недуг» преодолеть – имеется в PHP функция iconv, которая позволят преобразовывать из одной кодировки в другую (win-1251, например, в тот же utf-8). Но, как я уже говорил выше, плюс данного скрипта именно в отказе от PHP и решении задачи только через JavaScript.

Вторым недостатком я бы назвал – привязку сервиса к сайту источнику. То есть вы получите код, но скрипт будет работать на удаленном сервере, насколько я понял, и если там что-то испортится, ваш импорт RSS также накроется. Плюс непонятно как будет вести себя механизм при одновременном его использовании многими пользователями – лишние глюки ведь нам ни к чему.

SimplePie

SimplePie импорт rssДанный скрипт совершенно другого уровня – тут и требования к хостингу имеются, и документация, и даже свои хаки. В общем, мощная и комплексная разработка. Забегая наперед скажу, что со своей задачей импорта RSS  он справился на все 100. Также хотелось поблагодарить автора данной статьи, где размещено описание SimplePie на русском.

Плюсом SimplePie есть его универсальность, точнее правильнее будет сказать, что разработка есть не «конечным решением», а представляет собой php-класс, который уже можно использовать по своему усмотрению. Отсюда возникает первая сложность (в какой-то степени недостаток) – чтобы разобраться со скриптом полностью, нужно знать PHP. Дальше я расскажу о его установке, но для пользования всеми функциями требуются дополнительные знания. Второй момент – есть много документации, но вся она на английском языке:) Ну и третье, требования для хостинга – PHP 4.3.0 или выше, установленные библиотеки XML, PCRE, cURL, Zlib, mbstring, iconv.

Взамен получаем очень гибкий и мощный продукт. SimplePie поддерживает работу с различными версиями каналов RSS (0.90, 0.91, 0.92, 1.0, 2.0), Atom (0.3, 1.0). В нем нет проблемы с кодировкой – там все каким-то чудным образом обрабатывается и на выходе получаем красивый результат. Разработчики заверяют, что поддерживаются специальные символы для 100 различных языков. Кстати, скрипт распространяется по BSD лицензии, поэтому его совершенно спокойно и бесплатно можно внедрять в коммерческие продукты.

Чтобы установить SimplePie скачиваем архив отсюда. Затем создаем в корневой директории хостинга папку simplepie, куда заливаем файлы архива. Там вы найдете файл sp_compatibility_test.php, запустив который можно проверить совместимость библиотеки со сборкой РНР на сервере. Если что-то не так, увидите и сможете задать вопрос (просьбу) хостеру. Также в папке simplepie нужно создать директорию cache, которая будет использоваться для кэширования импортированных данных.

В сборке имеется директория demo, где вы найдете примеры использования скрипта. Библиотека SimplePie состоит из одного класса с одноименных названием, поэтому для работы вы должны лишь создать объект этого класса, а затем использовать нужные методы. Для примера можете добавить в папку simplepie некий файл test.php со следующим кодом:

<?php
// загрузка библиотеки
require_once $_SERVER['DOCUMENT_ROOT'].'/simplepie/simplepie.inc';
// создание и настройка объекта SimplePie
$feed = new SimplePie();
$feed->set_feed_url('http://www.3dnews.ru/news/rss/'); // путь к rss-каналу
$feed->set_cache_location('cache');
$feed->init();
$feed->handle_content_type();
if ($feed->data) {
    // вывод названия канала
    echo '
<h1><a href="'.$feed->get_link().'">'.$feed->get_title() .'</a></h1>
 
';
    // вывод не более 5 элементов канала
    for ($i=0; $i<5; $i++) {
        $item = $feed->get_item($i);
        // вывод ссылки и названия новости
        echo '<a href="'.$item->get_permalink().'">'.$item->get_title().'</a>';
        // вывод описания новости
        echo '
<div>'.$item->get_description().'</div>
 
';
    }
}
?>

В итоге должны получить импортированный RSS поток. Обратите внимание на комментарии в коде, они указывают места, где можно (и нужно) добавлять свои данные – путь к rss, заголовок канала, новости, количество элементов.

P.S. Читаем статью как заработать на покере! – учимся и покоряем азартные вершины.

Закажите качественные сателлиты у профессионалов – уникальный контент, дизайн, создания сайта под ключ.

Узнайте про эффективные диеты для похудения.

Понравился пост? Подпишись на обновления блога по RSS для блоггеров и вебмастеровRSS, RSS для блоггеров и вебмастеровEmail или RSS для блоггеров и вебмастеровtwitter!

dfGallery 2.0 – скрипт бесплатной Flash галереи сайта

Wednesday, 18 Feb 09 в 18:05

dfGalleryНедавно состоялся релиз новой версии достаточно интересной бесплатной flash галереи dfGallery, которую уже успели опробовать более 200тысяч человек. Отличительно особенностью галереи есть не только ее внешний вид, а и архитектура. Так, например, она поддерживает возможность настройки внешнего вида через «темы» и «стили». Система управления галереи построена с помощью фреймворка CodeIginter, позволяет управлять множеством галерей и альбомов разных типов.

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

flash галерея для сайта

Вот небольшой список функций dfGallery галереи:

  • Поддержка тем, которые позволяют сменить макет (шаблон) галереи.
  • Код галереи можно добавить на любой сайт, блог, страницу Facebook, Myspace и т.п.
  • Поддержка «скинов» – отредактировав PNG файл вы сможете полностью изменить внешний вид галереи.
  • Загрузка фотографий с Flickr и Picasa.
  • Разбиение фотографий на альбомы.
  • Полный контроль и управление галереей с помощью админ панели.
  • Одновременная загрузка нескольких изображений (Ajax).
  • Добавление фоновой музыки в галерею.
  • Полноэкранный режим для отображения изображений в лучшем качестве.
  • И многое другое в следующих версиях…

Мне лично очень понравилось, весьма функциональная фотогалерея для любого проекта. Если вы захотите себе ее установить, вот небольшой алгоритм и описание процесса настройки. Кстати, перед началом работы ознакомьтесь с техническими требованиями и убедитесь, что ваш сервер поддерживает Apache rewrite module, и там установлено PHP 5+ с активированными модулями php_json и php_curl.

Установка галереи dfGallery

1. Загружаем архив dfGallery  галереи (2Mb, зеркало), распаковываем его и заливаем на FTP сервера. При этом  предоставляем права чтения/записи (777) на файлы app/config/database.php и app/config/dfg/upgrade_state.php.

2. Создаем новую базу данных. Да? для системы понадобится БД, хотя требования выше вряд ли бы подошли примитивному хостингу без поддержки MYSQL:) Чуть позже в процессе установки можно будет указать префикс для таблиц. Поэтому, насколько я понял, можно запросто подключить галерею к уже существующей БД (например, от блога на WordPress).

3. Теперь непосредственно установка скрипта – заходим в setup: ваш_домен/путь_к_галерее/admin/setup. При наличии проблем с правами на файлы, система подскажет где что нужно подправить. Далее указываем параметры доступа к базе данных, а также префикс, если хотите.

подключение к базе данных

После окончания процесса вы получите пароль для доступа в админку. Автор рекомендует его поменять первым же делом.

4. При работе я заметил, что система dfGallery не дружит с русскими буквами, что, конечно, недопустимо:) Но, судя по использованию PHP5 их поддержка должна быть. В общем, зашел в базу данных через phpmyadmin и обнаружил у всех таблиц в поле collation установленное значение latin1_swedish_ci. Поэтому для таблиц, самой БД и полей каждой таблицы, где встречается эта кодировка нужно указать вместо нее utf8_general_ci. Для этого в phpmyadmin используется кнопка Operations либо, если вы продвинутый пользователь, можете попробовать обойтись MYSQL запросом.

настройки в phpmyadmin

После этого у меня русские тексты начали отображаться правильно.

6. Теперь можно создавать/наполнять галереи. Каждая галерея может содержать в себе подкатегории – альбомы. При создании альбома вы можете указать его тип, который определит будут ли фотографии грузится с локального компьютера либо сервисов Flickr и Picasa. Загружаем в систему только большие изображения, превью будут созданы автоматически. Для каждой фотографии можно добавить заголовок. После создания альбома все названия можно будет изменить.

Галереям и альбомам можно задавать разные настройки. Сейчас это размер изображения для вторых, а для первых – возможность задать скорость смены фотографий для слайдшоу и mp3 файл для фоновой музыки. Все это производится в меню Config.

Чуть дальше есть кнопка , которая позволит получить HTML код созданной вами галереи. Здесь нужно будет задать ее ширину и высоту – если пишите в пикселях, то указываете просто цифры без px. Можно использовать проценты. Дальше этот код вы можете добавить в обычную пустую html страницу или вставить в блог, профиль социальной сети и т.п.

Вот пример того, что у меня получилось (загрузка может занять некоторое время, т.к. там не самый быстрый хостинг, а здесь нет PHP5):

Фотографии, кстати, из проекта Boston Globe – новости в фотографиях (The Big Picture) – я писал об этом потрясающем фотоблоге на Дизайн Мании.

Страница с описанием галереи доступна также на сайте разработчиков. Это один западный дизайнерский блог, в скором времени обещают открыть под галерею отдельный раздел. Там же вы найдете видео всего процесса установки.

P.S. Народный комиссариат виртуальных дел – самый необычный хостинг, который я когда либо видел:)  Регистрации доменов, аренда серверов, высочайший сервис и скидки постоянным клиентам. Зацените!

Интересное интеврью с Kit`ом – представителем адалт бизнеса. Для интересующихся темой будет полезно почитать.

Также советую почитать про эффективные способы увеличения ТИЦ! Весьма актуально.

Ну и на последок – вышел 3-ий номер журнала SEOdigest – Сравнение зарубежных PPC систем, Кризис в SEO и многое другое. Скачать можно совершенно бесплатно.

Понравился пост? Подпишись на обновления блога по RSS для блоггеров и вебмастеровRSS, RSS для блоггеров и вебмастеровEmail или RSS для блоггеров и вебмастеровtwitter!
Страница 5 из 8« Первая...2345678