Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Скрипт отдающий изображения полученые другим скрип


Автор: Nikotja 10.2.2008, 23:10
Как сделать такой скрипт?



нужно написать на php скрипт которий может отдавать изображение сгенерированое другим скриптом, помогите

скрипт нужен чтобы пользователи видели icq статус админа но незнали с какого уина оно берет етот статус

вставить на страницу код

<img src='http://мой_сайт/этот_скрипт.php?id_user=1'> 




смысл скрипта: он должен получать гетом id_user с цифровым значением (номер пользователя).
и если id_user равно например 1 то оно присваюет переменной $icq_nomer значение например 111111111 (это номер icq)
и запрашует картину статуса с сервера icq

<img src="http://status.icq.com/online.gif?icq= $icq_nomer &img=5"></img> 




и после загрузки этого рисунка статуса пользователя отдает его странице в которой загрузка картинки с моего скрипта


заранеее благодарен

Автор: Golda 10.2.2008, 23:29
посылайте CURL-ом или сокетами запрос к status.icq.com, и транслируете все заголовки и содержимое пользователю. Заголовки можно не все. Но, как минимум, придется отправить Content-type. О том, как запросить документ с помощью CURL или сокетов, см., например, http://forum.vingrad.ru/forum/topic-163191.html

Автор: Nikotja 11.2.2008, 12:28
cURL не поддержывается, а второй вариант нехочет получать картинку которую дает скрипт на status.icq.com

PS: если давать напрямую ссылку на картинку то картинку отдает а при ссылке на скрипт нифига

мож у меня чтото не так?

Код

function urlGetContents($url, $timeout = 5)
{
   $url_parsed = parse_url($url);
   $host = $url_parsed["host"];
   if ($url == '' || $host == '') {
       return false;
   }
   $hostName = gethostbyname($host);
   $ip = ip2long($hostName);
   if ($ip === -1 || $ip === false) {
        return false;
   }
   $port = 80;
   $path = (empty($url_parsed["path"]) ? '/' : $url_parsed["path"]);
   $path.= (!empty($url_parsed["query"]) ? '?'.$url_parsed["query"] : '');
   $out = "GET $path HTTP/1.0\r\nHost: $host\r\nConnection: Close\r\n\r\n";
   $fp = fsockopen($host, $port, $errno, $errstr, intval($timeout));
   if (!$fp) {
       return false;
   }
   stream_set_timeout($fp, intval($timeout));
   fwrite($fp, $out);
   $headers = '';
   $content = '';
   $buf = '';
   $isBody = false;
   while (!feof($fp)) {
        $buf = fgets($fp, 1024);
        if ($isBody) {
            $content .= $buf;
        } else {
            $headers .= $buf;
        }
        if ($buf == "\r\n" ) {
            $isBody = true;
        }
   }
   preg_match('#HTTP/1.[0-9]{1}\s+([0-9]{3}).*#is', $headers, $match);
   fclose($fp);
   if($match[1] != 200) {
       return false;
   }
   return array('headers'=>$headers,'body'=>$content);
   
   
}
$user = $_GET['user_id'];
$urlAddress = 'http://web.icq.com/whitepages/online?icq=111111111&img=5';
if (($html = urlGetContents($urlAddress)) === false) {
    print "Адрес <b>".$urlAddress."</b> в данный момент недоступен";
} else {
header ("Content-type: image/gif");
print $html['body'];

}


Автор: Nikotja 11.2.2008, 23:23
все наваял сам, спасибо всем


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)