PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 11
Павел Отправлено: 12 Июля, 2008 - 15:25:05 • Тема: Определить тип файла • Форум: Программирование на PHP

Ответов: 16
Просмотров: 1334
valenok пишет:
http://www.iana.org/assignments/media-types/

Спасибо.

Улыбка Вот, сделал функцию, берите кому надо:

PHP:
скопировать код в буфер обмена
  1. function openurl($url) {
  2. $contenttype = array("text/html", "text/plain", "text/richtext");    // Здесь задаем список разрешенных content-type.
  3. $useragent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727"; // Задаем User_agent, отправляемый серверу.
  4.  
  5. $ch = curl_init();
  6. curl_setopt($ch, CURLOPT_URL, $url);
  7. curl_setopt($ch, CURLOPT_HEADER, 1);
  8. curl_setopt($ch, CURLOPT_NOBODY, 1);
  9. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  10. curl_setopt($ch, CURLOPT_USERAGENT, "$useragent");
  11. $headers = curl_exec($ch);
  12. if (curl_getinfo($ch,CURLINFO_HTTP_CODE) != 200) {
  13.         return FALSE;
  14. } else {
  15.  
  16.  
  17. $massiv = explode(";", curl_getinfo($ch,CURLINFO_CONTENT_TYPE));
  18.  
  19. if (in_array("$massiv[0]", $contenttype)) {
  20.     $dalee = 1;
  21. }
  22. }
  23.  
  24. if($dalee == 1) {
  25.         $cUrl = curl_init();
  26.         curl_setopt($cUrl, CURLOPT_URL, $url);
  27.     curl_setopt($cUrl, CURLOPT_PORT, $port);
  28.     curl_setopt($cUrl, CURLOPT_RETURNTRANSFER,1);
  29.     curl_setopt($cUrl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)");
  30.     curl_setopt($cUrl, CURLOPT_TIMEOUT, $timeout);
  31.     $content = curl_exec($cUrl);
  32.     if (curl_getinfo($cUrl,CURLINFO_HTTP_CODE) != 200) {
  33.         return FALSE;
  34.     } else {
  35.         return $content;
  36.     }
  37.     if(isset($html)) return $html;
  38.     else return FALSE;
  39.  
  40.         curl_close($cUrl);
  41. } else return FALSE;
  42. }


С расширинями дергаться не стал, ведь функция и так проверит content-type...

Теперь прошу помочь в функцией, которая бы выдергивала бы из текста адреса ссылок и помещала их в массив. У меня это нормально сделать не получаеться (оч. плохо с регулярными выражениями). Рассчитываю на помощь.
Павел Отправлено: 12 Июля, 2008 - 14:48:39 • Тема: Определить тип файла • Форум: Программирование на PHP

Ответов: 16
Просмотров: 1334
Я кажется начинаю разбираться что к чему... Закатив глазки Спасибо Вам большое!
Сейчас буду переделывать функцию чтения удаленного документа, но мне нужно знать какие content-type бывают, то есть какие мне оставлять. Перечислите мне пожалуйста, если нетрудно, а то я кроме text/html и text/plain никаких не знаю.
Павел Отправлено: 12 Июля, 2008 - 14:29:40 • Тема: Определить тип файла • Форум: Программирование на PHP

Ответов: 16
Просмотров: 1334
По расширению я сделаю, но ведь бывает, что картинка или архив отдаются не по прямым ссылкам с расширением, а сгенерированные скриптом.
А вот с CURLOPT_HEADER у меня почему то ничего не выходит. Точнее не получается так сделать, что бы сначала получить только заголовки, проверить их, и если они подходят, скачать все остальное содержимое. У меня почему то либо вообще ничего не выводиться:
PHP:
скопировать код в буфер обмена
  1. $cUrl = curl_init();
  2. curl_setopt($cUrl, CURLOPT_HEADER, 1);
  3. $header = curl_exec($cUrl);
  4. echo $header;

(Здесь я ожидал, что на экран выведуться заголовки), либо полностью выводяться и заголовки и содержимое страницы:
PHP:
скопировать код в буфер обмена
  1. $cUrl = curl_init();
  2. curl_setopt($cUrl, CURLOPT_URL, $url);
  3. curl_setopt($cUrl, CURLOPT_HEADER, 1);
  4. $header = curl_exec($cUrl);
  5. echo $header;

Подскажите пожалуйста, как решить эту проблему. Ведь нужно сначала загрузить заголовки и проверить их, а потом все остальное. Какой смысл скачивать многомегабайтный архив, что бы потом проверить его заголовки и понять, что это не то, что ожидалось? Очень надеюсь на помощь.
Павел Отправлено: 12 Июля, 2008 - 12:58:17 • Тема: Определить тип файла • Форум: Программирование на PHP

Ответов: 16
Просмотров: 1334
Нет, все таки у самого что-то не получается организовать проверку content-type. Прошу помощи. Вот код функции, которая открывает удаленный URL и читает исходный код документа в переменную. Нужно усовершенствовать ее, что бы она проверяла content-type и открывала только тектовые и HTML-документы.
PHP:
скопировать код в буфер обмена
  1. function urlGetContents(& $cUrl, $url, $port = 80, $timeout = 5, $errCount = 1)
  2. {
  3.     curl_setopt($cUrl, CURLOPT_URL, $url);
  4.     curl_setopt($cUrl, CURLOPT_PORT, $port);
  5.     curl_setopt($cUrl,CURLOPT_RETURNTRANSFER,1);
  6.     curl_setopt($cUrl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)");
  7.     curl_setopt($cUrl, CURLOPT_TIMEOUT, $timeout);
  8.     $content = curl_exec($cUrl);
  9.     if (curl_getinfo($cUrl,CURLINFO_HTTP_CODE) != 200) {
  10.         return (($errCount < 2) ? urlGetContents($cUrl, $url, $port, $timeout, ++$errCount) : false);
  11.     } else {
  12.         return $content;
  13.     }
  14.  
  15. }
  16.  
  17. function openurl($url) {
  18. $cUrl = curl_init();
  19. $urlAddress = "$url";
  20. if (($html = urlGetContents($cUrl, $urlAddress)) === false) {
  21.     return false;
  22. } else {
  23.     return $html;
  24. }
  25. curl_close($cUrl);
  26. }

Функция в качестве пораметра получает URL документа, а возвращает исходный код документа в виде строки.
CODE (text):
скопировать код в буфер обмена
  1. $text = openurl("http://example.com/test.html");


Прошу помощи в усовершенствовании функции. Заранее спасибо!
Павел Отправлено: 11 Июля, 2008 - 14:14:51 • Тема: Определить тип файла • Форум: Программирование на PHP

Ответов: 16
Просмотров: 1334
valenok пишет:
А скажите зачем это нужно

Да вот в качестве тренировки решил написать небольшой скрипт для поиска по сайту, что бы ходил по ссылкам, находил только ссылки, принадлежащие этому сайту, открывал их и индексировал содержимое. По-этому нужно что бы он умел определять, где веб-страница, а где - нет.
Павел Отправлено: 11 Июля, 2008 - 13:24:04 • Тема: Определить тип файла • Форум: Программирование на PHP

Ответов: 16
Просмотров: 1334
Цитата:
вариант первый это не читать страницу с удалённого сервера вовсе

Не, ну это не выход. Мне как раз и нужно читать страницу с удаленного сервера.
Цитата:
второй вариант это вовсе не проверять тип, ибо какая разница что это

Мне нужна именно веб-страница, а не какой-нибудь архив или PDF-файл...
Павел Отправлено: 11 Июля, 2008 - 12:49:37 • Тема: Определить тип файла • Форум: Программирование на PHP

Ответов: 16
Просмотров: 1334
На счет того, что не защитит - это ладно. Я ведь только набираю опыт. Но если Вам не лень, то предложите другой вариант решения этой проблемы. Буду только благодарен.

Цитата:
При помощи curl

Уже нашел статью по этому вопросу. попытаюсь что-то из нее понять. Только там про сокеты написано...
Павел Отправлено: 11 Июля, 2008 - 11:53:41 • Тема: Определить тип файла • Форум: Программирование на PHP

Ответов: 16
Просмотров: 1334
Чаще всего ведь правильные заголовки посылают. Да вопрос не в том, подскажите, как можно эти заголовки прочитать, а правильные они или нет - вопрос отдельный.
Павел Отправлено: 11 Июля, 2008 - 11:50:44 • Тема: Шаблоны { ... } • Форум: Программирование на PHP

Ответов: 2
Просмотров: 201
По поводу первого варианта, спасибо, понял. Просто думал, что это как-то по-другому делается.

На счет второго теоретически понятно, но как это реализовать, подскажите пожалуйста? Каким образом можно вырезать этот кусок? Для меня регулярные выражения - сродни китайскому языку, как я не старался их понять. По-этому обращаюсь за помощью.
Павел Отправлено: 10 Июля, 2008 - 22:35:19 • Тема: Определить тип файла • Форум: Программирование на PHP

Ответов: 16
Просмотров: 1334
Делаю скрипт, который читает содержимое удаленной веб-страницы в переменную, но сначала хотелось бы проверить, а веб-страница ли это? Как можно проверить тип открываемого URL-адреса? Ведь браузеру, когда заходишь на какой-нибудь сайт, передается тип документа (text/html, application/xml и т.д.). Как это можно проверить с помощью PHP в моем случае?
Заранее огромное спасибо!
Павел Отправлено: 10 Июля, 2008 - 21:21:12 • Тема: Шаблоны { ... } • Форум: Программирование на PHP

Ответов: 2
Просмотров: 201
Здравствуйте, уважаемые форумчане!
Я новичок в PHP-программировании, по-этому прошу совета.
Заметил, что многие CMS и форумы в файлах шаблонов используют такие символы: { и }, что бы подставлять вместо их содержимого какие-то данные. Так вот, мне очень интересно, как же это можно реализовать в своих сценариях? Это был первый вопрос. Что бы не разводить много постов, задам второй вопрос здесь же.
К сожалению, я полный ноль в работе с регулярными выражениями, как ни старался их понять... По этому задаю свой вопрос: подскажите пожалуйста, каким образом можно сделать, что бы скрипт "увидел", если, например, строка {URL} обрамлена HTML-комментариями (<!-- {URL} --> ) или находиться в JavaScript-блоке (<script type=javascript>{URL}</script> ), или еще ее как-то пытаются скрыть.
Допустим, в переменной $text содержится код страницы, и нужно найти в ней {URL} и проверить, не является ли он комментарием, а так же не заключен ли он в JavaScript-код. Вот собственно это мне и нужно.

Заранее, большое спасибо!

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB