Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение данных со сторонней страницы. 
:(
    Опции темы
KoLiZeI
Дата 14.8.2008, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.4.2007
Где: г. Саратов

Репутация: нет
Всего: нет



Помогите пожалуйста разобраться в проблеме. 
Суть задачи в следующем: нужно на сайте вывести информацию с другого сайта, имея лишь его статический адрес. Доступа к базе данных нет. 
Заранее спасибо.  smile 
PM MAIL WWW ICQ Skype   Вверх
bars80080
Дата 14.8.2008, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



попробуй fopen('http:/ /adres', 'r'); fread();
PM MAIL WWW   Вверх
KoLiZeI
Дата 14.8.2008, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.4.2007
Где: г. Саратов

Репутация: нет
Всего: нет



Я думаю что мне нужно получить переменную с кодом страницы, который нужно будет очистить от тегов и разбить по концу строки, так как количество строк всегда будет одинаковое. Или нет?

Добавлено через 5 минут и 1 секунду
2Feldmarschall мне нужно не перейти на неё, а получить её массив у себя.
2bars80080 чет не пашет
PM MAIL WWW ICQ Skype   Вверх
americanets
Дата 14.8.2008, 12:06 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



bars80080, давно fopen для открытия удаленных страниц ? 


KoLiZeI, на формуме 20 % таких вопросов , 19% решены, попробуй поискать


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
solenko
Дата 14.8.2008, 12:48 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



Цитата(americanets @  14.8.2008,  11:06 Найти цитируемый пост)
bars80080, давно fopen для открытия удаленных страниц ? 

ОЧЕНЬ давно



--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
KoLiZeI
Дата 14.8.2008, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.4.2007
Где: г. Саратов

Репутация: нет
Всего: нет



Пытаюсь сделать так

Код

$fp = fsockopen("capitalcity.combats.com", 80, $errno, $errstr, 30);
    
    if (!$fp) 
        {
            echo "Error ;)<br />\n";
        } 
    else 
        {
            $out =  "GET /inf.pl?login=ротшильд HTTP/1.1\r\n";
            $out .= "Host: capitalcity.combats.com\r\n";
            $out .= "Connection: Close\r\n\r\n";
            
            fwrite($fp, $out);
            
            while (!feof($fp)) 
                {
                 $text .= fgets($fp, 128);
                }
                
            fclose($fp);
        }

что бы получить страницу, а мне выдается 301 ошибка Moved Permanently 
и пишет Connection: close . В чем ошибка, помогите?
PM MAIL WWW ICQ Skype   Вверх
americanets
Дата 14.8.2008, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



301 страница перемещена

Добавлено через 53 секунды
Цитата(KoLiZeI @  14.8.2008,  15:08 Найти цитируемый пост)
выдается 301 ошибка Moved Permanently 


и это не ошибка, а нормальное сообщение о том что страницу переместили


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
solenko
Дата 14.8.2008, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



И часто это сообщение выдают тем, кто пытается незаконно сграбить чужую страницу. Например, google так делает )


Это сообщение отредактировал(а) solenko - 14.8.2008, 14:48


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
nornad
Дата 14.8.2008, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 1
Всего: 31



KoLiZeI, всего-то надо:
а) fopen (как уже выше сказали)
б) fread всего, что дадут по файловому дескриптору
в) fclose (хороший тоне всегда закрывать то, что открывал и более не нужно)
г) preg_match или что-нибудь вроде того, чтобы найти нужные тебе теги на странице и выдрать их содержимое

Это сообщение отредактировал(а) nornad - 14.8.2008, 14:51


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
KoLiZeI
Дата 14.8.2008, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.4.2007
Где: г. Саратов

Репутация: нет
Всего: нет



Выводит вот такой крякозяброй всё
Цитата

€§3ЩбЙa&TЖBk! Єљ ЛШX€ѕњY@d" vН^ЗтР_Н¶й™гі Н±oХc}dЇІ‹:‰™;рЏєvП3;§„^ї°NР2ыH\е…ёЬ

PM MAIL WWW ICQ Skype   Вверх
Anarki
Дата 14.8.2008, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 14.3.2005

Репутация: 7
Всего: 11



301/302 обыкновенный редирект

Добавлено через 29 секунд
Цитата(KoLiZeI @ 14.8.2008,  18:16)
Выводит вот такой крякозяброй всё
Цитата

€§3ЩбЙa&TЖBk! Єљ ЛШX€ѕњY@d" vН^ЗтР_Н¶й™гі Н±oХc}dЇІ‹:‰™;рЏєvП3;§„^ї°NР2ыH\е…ёЬ

Ну перекодируй в нужную тебе кодировку.


--------------------
PM WWW   Вверх
KoLiZeI
Дата 15.8.2008, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.4.2007
Где: г. Саратов

Репутация: нет
Всего: нет



Так ничего и не получилось.
Помогите получить страницу вида capitalcity.combats.com/inf.pl?login=ротшильд
 smile 
PM MAIL WWW ICQ Skype   Вверх
americanets
Дата 15.8.2008, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12





--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
KoLiZeI
Дата 15.8.2008, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.4.2007
Где: г. Саратов

Репутация: нет
Всего: нет



Код

function check_link($link) {
    $main = array();
    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL, $link);
    curl_setopt ($ch, CURLOPT_HEADER, 1);
    curl_setopt ($ch, CURLOPT_NOBODY, 1);
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt ($ch, CURLOPT_NETRC, 1);
    curl_setopt ($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, "/inf.pl?login=ротшильд"); 
    ob_start();    
    $stuff = ob_get_contents();
    ob_end_clean();
    curl_close ($ch);
    $parts = split("\n",$stuff,2);
    $main = split(" ",$parts[0],3);    
    return $main;
  }  
  print_r(check_link('http://capitalcity.combats.com'));   


Если возвращать $main выводит Array ( [0] => ) , а если $stuff, то вообще ничего не выводит...  smile 
Если выводить без curl_setopt($ch, CURLOPT_POSTFIELDS, "/inf.pl?login=ротшильд");  то выводит Array ( [0] => HTTP/1.1 [1] => 200 [2] => OK )

PM MAIL WWW ICQ Skype   Вверх
americanets
Дата 15.8.2008, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



Цитата(KoLiZeI @  15.8.2008,  12:49 Найти цитируемый пост)
CURLOPT_POSTFIELDS


POST не GET . разницу понимаешь ? 


Попытайся включить логику, почитать мануал, погуглить


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
KoLiZeI
Дата 15.8.2008, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.4.2007
Где: г. Саратов

Репутация: нет
Всего: нет



заголовок получил номральный 
HTTP/1.1 302 Moved Temporarily Date: Fri, 15 Aug 2008 09:36:47 GMT Server: 0W/0.7p Content-Type: text/html; charset=iso-8859-1 Location: http://demonscity.combats.com/inf.pl?login=ротшильд Content-Length: 231 HTTP/1.1 200 OK Date: Fri, 15 Aug 2008 09:36:47 GMT Server: 0W/0.8b Content-Type: text/html; charset=windows-1251 Content-Encoding: gzip Content-Length: 5045 Expires: Wed, 15 Aug 2007 20:00:00 GMT Pragma: no-cache Cache-control: no-cache pragma: no-cache cache-control: no-cache, 
а вот дальше все иероглифами выводит, как можно перекодировать? iconv не помогает
PM MAIL WWW ICQ Skype   Вверх
KoLiZeI
Дата 15.8.2008, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.4.2007
Где: г. Саратов

Репутация: нет
Всего: нет



Как я понял, всё иероглифами выводиться потомучто содержимое сжато gzip?

И ещё появилась проблема, на сервере где должен работать скрипт вылезла ошибка 
Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set,
хотя тами:  open_basedir     - no value и safe_mode    Off    Off
в чем проблема? нашёл что можно переписать скрипт без followlocation, например, выдергивая из заголовка ответа нужные кукисы и новый location, токак как это сделать?
PM MAIL WWW ICQ Skype   Вверх
Anarki
Дата 15.8.2008, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 14.3.2005

Репутация: 7
Всего: 11



Столько ошибок в коде, советую покурить php.net/curl_setopt .
gzip можно раскодировать через враппер или функцию zlib http://php.net/gzdecode

Добавлено @ 18:07
Цитата(KoLiZeI @  15.8.2008,  18:45 Найти цитируемый пост)
хотя тами:  open_basedir     - no value и safe_mode    Off    Off

Код

<?php
var_dump(ini_get('open_basedir'));
echo "<br />\n";
var_dump(ini_get('safe_mode'));


Это сообщение отредактировал(а) Anarki - 15.8.2008, 18:08


--------------------
PM WWW   Вверх
solenko
Дата 15.8.2008, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



А можно не заморачиватся с раскодированием gzip и просто прикинутся старым браузером и послать header, что ты Gzip не поддерживаш 


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Anarki
Дата 15.8.2008, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 14.3.2005

Репутация: 7
Всего: 11



solenko, только это если сайт "умный". Может он всегда в gzip'е отдает.


--------------------
PM WWW   Вверх
KoLiZeI
Дата 15.8.2008, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.4.2007
Где: г. Саратов

Репутация: нет
Всего: нет



прикинутсья старым не получается и Zlib там тоже не стоит (
PM MAIL WWW ICQ Skype   Вверх
smartov
Дата 15.8.2008, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



KoLiZeI, 
Requirements: PHP5

Вроде работает. Правда пришлось через файл, т.к. gzuncompress дюже тупит.

Код

<?php

class CombatPlayer {

    protected $error = '';
    protected $tmpfile = 'tmpfile';

    public function __construct() {
        $this->error = '';
    }

    public function grabContent($url, &$content) {

        $urlcontent = @file_get_contents($url, 'r');
        if (!$urlcontent) {
            return $this->setError('Could not open url.');
        }
        
        if (($bytes = file_put_contents($this->tmpfile, $urlcontent)) == 0) {
            return $this->setError('Could not write to file.');
        }

        $gz = @gzopen($this->tmpfile, 'r');
        if (!$gz) {
            return $this->setError('Could not open file.');
        }
        $buf = '';
        while (!feof($gz)) {
            $buf .= gzread($gz, 1024);
        }
        gzclose($gz);
        
        $content = $buf;
        return true;
    }
    
    /*** Error handling ***/
    
    protected function setError($message = '') {
        $this->error = $message;
        return false;
    }

    public function getError() {
        return $this->error;
    }

    public function isError() {
        return $this->error != '';
    }

}


$player = new CombatPlayer();
if ($player->grabContent('http://dreamscity.combats.com/inf.pl?login=ротшильд', $content)) {
    echo sprintf('<html><body><textarea style="width:800px;height:500px">%s</textarea></body></html>', $content);
} else {
    echo $player->getError();
}


Добавлено через 3 минуты и 29 секунд
Цитата(KoLiZeI @  15.8.2008,  19:40 Найти цитируемый пост)
Zlib там тоже не стоит

Эээ... мдя. Это грустно.

Добавлено через 4 минуты и 59 секунд
KoLiZeI, а разрешен exec или system?

Добавлено через 5 минут и 15 секунд
Можно ж воспользоваться стандартным утилем gunzip
PM MAIL   Вверх
KoLiZeI
Дата 15.8.2008, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 6.4.2007
Где: г. Саратов

Репутация: нет
Всего: нет



Всё разобрался, извините за тупость ) и спасибо за помощь!
PM MAIL WWW ICQ Skype   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0914 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.