Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программируем на PHP - вопросы и ответы.


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Рассылка сайта
РНР для всех!

Выпуск номер 11

Здравствуйте

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


Грабим странички

С аудиограбберами знакомы все. Нам предстоит сделать свой собственный граббер информации из Интернета. Нам понадобится подопытный кролик, на роль которого я предлагаю выбрать сайт http://subscribe.ru :-) Что мы можем у них стянуть хорошего? Собственно говоря, там хорошего много, но есть кое-что, что нам и нашим посетителям может действительно пригодиться! Я имею в виду список новых рассылок, переведенных в категорию серебряных. Не секрет, что когда рассылку переводят в эту категорию, ее рейтинг (в виде количества подписчиков) непременно взлетает. Вольно или невольно мы будем содействовать этому процессу, так как посетители Вашего сайта смогут подписаться на понравившиеся им рассылки прямо, так сказать, не отходя от кассы. Для начала нам потребуется адрес, откуда мы будем грабить информацию. Он такой - http://win.subscribe.ru/catalog/latest Если кого-то не устроит кодировка, подставьте свою. По указанному адресу мы находим все переведенные в категорию серебряных рассылки. Причем список постоянно обновляется, оставаясь таким образом актуальным всегда.

Привожу весь код, пояснения к нему - дальше...

<?php
// начало
$link = "http://win.subscribe.ru/catalog/latest";
$file = @fopen($link, "r");
if ($file) { $rf = fread($file, 200000); fclose($file); } else { echo "<h3 align=center>Извините, запрошенная страница временно не доступна!</h3>
<center><IMG src=http://virtual.bresttelecom.by/banner.jpg width=468 height=60 border=0 alt=\"Виртуальный Брест\"></A><br><br>"; }


// 1
$rf = trim (chop ($rf));
$s = strpos($rf, "<!--noindex--><FORM", 0);
$rf = substr($rf, $s);

// 2
$s = strpos($rf, "<!--/noindex--><table");
$rf = substr($rf, 0, $s);

// 3
$rf = str_replace ("/catalog/","http://win.subscribe.ru/catalog/", $rf);
$rf = str_replace ("/archive/","http://win.subscribe.ru/archive/", $rf);
$rf = str_replace ("ACTION=/member/quick","ACTION=http://win.subscribe.ru/member/quick", $rf);
$rf = str_replace ("/img/money2.gif","http://win.subscribe.ru/money2.gif", $rf);
$rf = str_replace ("/img/a114.gif","http://win.subscribe.ru/af.gif", $rf);
$rf = str_replace ("/img/af.gif","http://win.subscribe.ru/af.gif", $rf);

// 4
echo $rf;
?>

А теперь поехали! В самом начале нам нужно выкачать страничку. Записываем ее адрес и открываем по нему соединение. Далее идет проверка - если соединение успешно, можно считать весь файл (не мудрствуя лукаво указываем 200000 байт для считывания, что явно больше размера открываемого файла), если произошла ошибка открытия, предупреждаем об этом посетителя и выводим ему что угодно, например баннер.

Этап 1.
$rf = trim (chop ($rf)); - этой мудреной комбинацией мы значительно уменьшим объем обрабатываемых данных, так как уберем повторяющиеся пробелы и пробелы в конце и в начале файла.  Потом нам нужно определиться с местом, откуда мы будем выводить информацию. Анализ кода дает нам очень эффективный механизм, и мы им непременно воспользуемся.
$s = strpos($rf, "<!--noindex--><FORM", 0); - эта команда позволяет найти номер позиции указанной последовательности символов в строке, куда мы считали весь код файла. Результат помещается в переменную $s
$rf = substr($rf, $s); - жестоко обрезаем все, что находится перед этой комбинацией. В том числе и баннеры, кстати.

Этап2.
Делаем почти тоже самое, но только для конца файла. Файл оказывается обрезан с начала и с конца так, как нам того хочется. Обращаю Ваше внимание, что в данном случае все оказалось очень просто, но иногда приходится применять другие метода для вырезки кода, так как нет столь четких границ. Но почти всегда можно что-то придумать. В результате этой обработки у нас уже есть почти все, что надо. В принципе можно было просто вывести все на экран, но есть один нюанс, который нужно учитывать. Это - ссылки. Они не абсолютные, а относительные. Хорошо хоть, их мало... А в таком случае проблема решается просто.

Этап3.
Берем, и заменяем то, что есть на то, что нам нужно. Например:
$rf = str_replace ("/catalog/","http://win.subscribe.ru/catalog/", $rf);
Эта строчка кода позволяет нам заменить во всей строке $rf относительные ссылки на абсолютные. Точно так же поступаем со всеми остальными ссылками, которые встречаются в коде странички. Грубо, но точно...

Этап4.
Тут мы просто выводим результат на экран посетителю. А этот результат - нужный нам код HTML странички, который и будет отображен браузером. Если Вы хотите интегрировать этот код к себе, Вам скорее всего придется сделать еще одно - расправиться с таблицами, которые норовят по ширине вылезть из Вашего дизайна. Но тут уж подумайте сами. Ничего сложного нет - находит, что отвечает за размер страницы, и заменяем это на пустую строку.

Результат - на экране. Если хотите посмотреть как это все работает в натуре, посетите страницу http://virtual.bresttelecom.by/komputer/ Там есть этот пример, а так же два других, но предлагаю посмотреть на них самим. На сегодня все.

 

Приходит очень много вопросов по теме установки и настройки РНР и Apache. Честно говоря, я сам в этом деле не очень хорошо разбираюсь (в установке под Win), но зато могу посоветовать к кому обратиться. http://www.design-studios.ru/php/apache/ Этот сайт и его автор, надеюсь, смогут Вам помочь в нелегком деле настройки. Там выложены самые лучшие и подробные описания, много полезной информации по теме. Пользуйтесь...


Сайты в тему

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

  • http://www.php.net/ - официальный сайт РНР. Масса информации, но только для тех, кто дружит с английским.
  • http://go.to/php-encoder - защита РНР скриптов.
  • http://phpclub.net - Архив бесплатных PHP-приложений (вкл. E-commerce), форумы, чаты, рассылки, книги, обучение, хостинг.

Где можно посмотреть

А и правда. РНР, да РНР! А где посмотреть как все это работает и оценить, стоит или нет заниматься этим... Правильное решение будет таким. Посетите сайты, указанные ниже, и посмотрите как они работают. Кстати, если хотите продемонстрировать всем свой проект или то, чего Вы достигли изучая РНР, присылайте ссылку и описание, и все это будет размещено здесь. Только не забудьте поставить у себя наш баннер, можно и не на главной, но буду не против :-) Ссылки на сайты будут вращаться по кругу по мере поступления.

http://virtual.bresttelecom.by - Виртуальный Брест. На РНР работают чат, форум, гостевая, объявления, статистика посещений, обмен компакт дисков, анекдоты.
www.gdekupit.ru Интернет-каталог Где купить в России. Каталог полностью автоматизирован. Регистрация, добавление нового города, Оформление Договора, выписка счета, служба рассылки и т.д. полностью автоматизировано. Все, кроме счетчика посещений на PHP и MySQL. Кстати, регистрация предприятий, расположенных в любом города России, абсолютно бесплатная.
http://www.ohrana.nsk.su - Практически весь сайт написан на PHP. Используется БД на MySQL.

http://www.webclub.lv   - Латвийский Клуб Веб-мастеров Наш сайт предназначен для всех кто творит и хочет творить Интернет. Мы предлагаем информацию, помощь и примеры по дизайну. Довольно обширная коллекция скриптов. Статьи, учебники и многое другое.
http://www.love24h.com/ru/   - международная служба знакомств, все анкеты (более 1500) с фото
http://www.freeglobus.com/ - сайт бесплатных игр (все со скриншотами и линками на загрузку)

http://trinet.wallst.ru - на PHP сделан каталог игр
www.nixers.com - сайт для поиска непостоянной работы в Ирландии. Short term, part-time and temporary jobs in Ireland.


Вопросы и ответы
задать вопрос

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

задать вопрос

Вопросы: 

  1. Нужен скрипт PhP определение броузера и в зависимости от его версии и типа(IE, Netscape, Opera) вставлял в Index.php два разных файла (file1.php и file2.php) задача наверное несложная но я новичок (если можно подробно и доходчиво).
    ответить
  2. У мена такая проблема. Пробовал пример с посылкой почты, выдает ошибку :
    Warning: Server Error in test.php on line 75.
    Строка 75:
    73 - $email = "адрес";
    74 - $txt = "тестовое послание!";
    75 - mail($email, "Тема письма", $txt, "");
    У меня стоит W2000 (соответственно с IIS 5.0) При инсталяции PHP прописался пад него. Может что подскажите?

    ответить
  3. Прошу помощи сделал один к одному по инструкции выставленной на сайте, по установке Apache
    версии 1.3.6, но команда http://localhost/index.html вызывает только, что '' веб страница
    не доступна в в автономном режиме" и на этом молчок , страница не вызывается. С уважением Сергей. Очень надеюсь на ответ

    ответить
  4. Подскажите как вставить с помощью РНР в html-страничку картинку gif или jpg сохраненную в базе MySQL. С помощью include/require не получается из-за header.
    ответить
  5. Что мне нужно написать, чтобы форма отправлялась на p1@e-mail.ru названия форма msg1, msg2
    ответить
  6. Как я понимаю на свой комп можно установить среду PHP и видеть работают ли составленные мной
    коды так как нужно. Если это действительно так, то подскажите где можно скачать дистрибутив и как
    всё это дело установить?
    ответить
  7. Не подскажете где можно найти PHP скрипт который строит дерево ссылок (уровень ссылки и ее текст берется из mySQL базы) с возможностью сворачивания и разворачивания веток Спасибо
    ответить


    Ответы на заданные вопросы:
  1. Здравствуйте помогите правильно напистаь скрипт по аудентификации, я что то совсем запутался с Oracle-ом, подскажите хотя бы что я делаю не так, с Mysql, мне не поможет, мне нужно именно с БД Oracle. Заранее благодарен, С уважением Олег.

    <html>
    <?php
    if(!isset($PHP_AUTH_USER)) {
    Header("WWW-Authenticate: Basic realm=\"restricted area\"");
    Header("HTTP/1.0 401 Unauthorized");
    echo Вы ввели неправельный пароль... \n";
    exit;
    } else {
    $db="userpass";
    $conn = OCIlogon ("users", "password", $db);
    $str = OCIParse ($conn, "select * from users);
    $user_id = strtolower ($PHP_AUTH_USER);
    $result = -Oci -("select password from userpas" .
    "where username = '$username'")
    $row = -Oci - ($result);
    if ($PHP_AUTH_PW != $row["password"]){
    Header("WWW-authtenticate: basic realm=\"restricted area\"");
    Header("HTTP/1.0 401 Unathorized");
    echo " Аудентификация невозможна повторите попытку";
    exit;
    }
    }
    ?>
    </html>


    Ответ:

    Привет Олег я бы порекомендовал в OCILOGON третий параметр обнулить.
    т.е. $db = ""; В таком варианте oracle будет брать инфо из переменных окружения.
    Удачи,Дмитрий
  2. Что лушчше использовать для организации счетчика: MySQL, куда будут заноситься IP-адреса входивших, или текстовый файл .dat. И еще, как распознать тот же IP-адрес клиента? Спасибо. Tip.

    Ответ:
    Зависит от предназначения твоего сайта, если он весь постоен на технологии MySQL то да, а если ты просто хочеш зделать track user то в файл dat легче, зачем сервак нагружать...

    Если решиш использовать MySQL то вот пример таблы:
    CREATE TABLE ip (
    ip varchar(25) NOT NULL,
    );
    и вот код...
    $ip = getenv("REMOTE_ADDR");

    $result = mysql_query("SELECT * FROM ip WHERE ip='$ip'");
    if ($row != mysql_fetch_array($result)) {
    mysql_query("INSERT INTO ip (ip) VALUES ('$ip')");
    }

    >И еще, как распознать тот же IP-адрес клиента? Спасибо. Tip.
    Просто и элементарно:

    $ip = getenv("REMOTE_ADDR");

    Правда не совсем понятно зачем тебе нужны только ip человека? Тебе не помешало бы посмотреть документацию на тему session. MaximatoR


    Ответ:
    На мой взгляд лучше MySQL во избежание проблем с разделением файла в мультизадачке...
    Насчет IP-адреса:
    if ($REMOTE_HOST == "") {
    $host = $REMOTE_ADDR;
    }
    else {
    $host = $REMOTE_HOST;
    }
    mysql_query ("INSERT INTO host (host) VALUES ('$host')");
    Это запишет в таблицу host либо IP-адрес, либо имя обратившегося компьютера. Поле host - текстовое, длина - любая, но чтобы влез IP адрес xxx.xxx.xxx.xxx, т.е. минимум 15 символов. См. также функции gethostbyname, gethostbyaddr и пр.
  3. есть-ли версия Apache под Win ME? или какой-нибудь другой веб-сервер для отладки скриптов в офф-лайне с поддержкой php, mysql и perl под millennium?

    Ответ:
    Apache без src
    http://httpd.apache.org/dist/httpd/binaries/win32/apache_1.3.19-win32-no_src-r2.msi
    и все работает под Win Me


    Ответ:
    а какая разница, apache прекрасно работает в 9*/ME/2000 и ни каких у меня проблем набыло... MaximatoR

задать вопрос


Обмен ссылками и баннерами

Предлагаю Вам стать участниками баннерообмена. Ваши ссылки и описания Ваших сайтов вы можете присылать по адресу рассылки - virtualphp@tut.by Все ссылки обязательно появятся в этой рассылке. Если есть желание разместить свой баннер 88*31 на сайте рассылки http://virtual.bresttelecom.by/php/ , укажите это дополнительно, и пришлите код своего баннера. В любом случае, Вам надо будет разместить у себя код баннера сайта рассылки, и только на главной страничке Вашего сайта. Или - на нескольких других.

PHP для всех! Программируем сами.            <!-- PHP banner --><a target="_blank"  href="http://virtual.bresttelecom.by/php/"><img    src="http://virtual.bresttelecom.by/php/php/php1.gif" border="0" width="88" height="31"
alt="
PHP для всех! Программируем сами."></a>

<!-- PHP banner end -->
PHP для всех! Программируем сами.            <!-- PHP banner --><a target="_blank"  href="http://virtual.bresttelecom.by/php/"><img    src="http://virtual.bresttelecom.by/php/php/php2.gif" border="0" width="88" height="31"
alt="
PHP для всех! Программируем сами."></a>

<!-- PHP banner end -->
PHP для всех! Программируем сами. <!-- PHP banner --><a target="_blank"  href="http://virtual.bresttelecom.by/php/"><img    src="http://virtual.bresttelecom.by/php/php/php3.gif" border="0" width="88" height="31"
alt="
PHP для всех! Программируем сами."></a>

<!-- PHP banner end -->
PHP для всех! Программируем сами. <!-- PHP banner --><a target="_blank"  href="http://virtual.bresttelecom.by/php/"><img    src="http://virtual.bresttelecom.by/php/php/php4.gif" border="0" width="88" height="31"
alt="
PHP для всех! Программируем сами."></a>

<!-- PHP banner end -->

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

  1. http://tweak.tut.by - Оптимизация и настройка компьютера. Если Вас интересуют различные аспекты настройки Вашего мегагерцевого друга, Вам надо посетить сайт посвященный настройке и оптимизации. Кроме того - список последних версий популярных программ и свежие новости, а так же чат, форум и многое другое!

  2. http://www.webclub.lv - Латвийский Клуб Веб-мастеров Наш сайт предназначен для всех кто творит и хочет творить Интернет. Мы предлагаем информацию, помощь и примеры по дизайну. Довольно обширная коллекция скриптов. Статьи, учебники и многое другое.

Правила у меня стандартные - описания Ваших сайтов будут периодически (в зависимости от их количества) размещаться в рассылке. И конечно - будет отдельная страничка на сайте, на которой будут представлены все друзья сайта.

http://virtual.bresttelecom.by - Виртуальный Брест. Региональный информационно - развлекательный портал города Бреста. Чат, форум, статьи, услуги, объявления, недвижимость, каталог сайтов - это и многое другое ждет Вас на страницах сайта.
http://tweak.tut.by - http://tweak.bresttelecom.by - Оптимизация и настройка компьютера. Если Вас интересуют различные аспекты настройки Вашего мегагерцевого друга, Вам надо посетить сайт посвященный настройке и оптимизации. Кроме того - список последних версий популярных программ и свежие новости, а так же чат, форум и многое другое!
http://saleha.al.ru/anecdot/index.phtml   - самые новые и смешные анекдоты.
http://klepan.narod.ru  - Халява pliz! - реферал клуб.
http://www.ohrana.nsk.su - Название: Управления вневедомственной охраны г.Новосибирска. Описание: Услуги по охране квартири других объектов, сопровождение грузов. На сайте: интересные статьи, новости, криминальная хроника, вакансии и другая полезная информация!
http://www.programing.narod.ru - программирование на РНР


Подпишитесь на рассылки!

Рассылки Subscribe.Ru
Программируем на PHP - вопросы и ответы
Новости сайта Виртуальный Брест
Оптимизация и настройка компьютера
Кроссворды еженедельно

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


Разное

Обращаю Ваше внимание, что правильный адрес рассылки - virtualphp@tut.by. Сайт рассылки доступен по адресу http://virtual.bresttelecom.by/php/
Если Вы можете помочь сделать баннер для сайта, буду Вам очень признателен. С графикой я не очень дружу, но думаю, что смогу быть полезен и Вам. Жду предложений. Нужен баннер 88*31, лучше анимированный, по теме РНР, вопросы, ответы, статьи и т.д. Все, приславшие свои предложения, будут рекламироваться в рассылке. Первые работы уже есть.

Текстовая обменная сеть

TLE (http://www.tle.ru)   - это уникальная сеть обмена ссылками, позволяющая увеличить посещаемость Вашего сайта. Показывая у себя на сайте 100 баннеров, вы зарабатываете всего 80 показов Ваших баннеров. Показывая 100 рекламных блоков TLE.RU, Вы зарабатываете 255 показов Ваших ссылок! Почуствуйте разницу! Высокий CTR%, удобная панель управления, мгновенная регистрация. Спешите! Только до 15 мая каждому новому участнику 50,000 БЕСПЛАТНЫХ показов! Узнать подробности и стать участником сети можно на сайте http://www.tle.ru


автор рассылки Андрей Кухарчик



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться Relayed by Corbina
Рейтингуется SpyLog

В избранное