Advertisement
stuppid_bot

Untitled

Apr 16th, 2013
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.81 KB | None | 0 0
  1. <?php
  2.  
  3. $url = parse_url($_REQUEST['u']);
  4. $error = '';
  5.  
  6. if ($url['scheme'] != 'http') {
  7.     $error = 'Не указан либо неправильный протокол';
  8. }
  9. else {
  10.     $fh = fsockopen($url['host'], 80, $errno, $error, 1);
  11.    
  12.     if ($fh) {
  13.         fwrite($fh, "GET " . $url['path'] . ($url['query'] ? '?' . $url['query'] : '') . " HTTP/1.1\r\nHost: {$url['host']}\r\nConnection: close\r\n\r\n");
  14.         $status = explode(' ', fgets($fh), 3);
  15.  
  16.         if ($status[1] != 200) {
  17.             $error = $status[2];
  18.         }
  19.         else {
  20.             $headers = array();
  21.  
  22.             while (1) {
  23.                $header = rtrim( fgets($fh) );
  24.  
  25.                // \r\n\r\n заголовки кончились
  26.                if ($header == '') {
  27.                    break;
  28.                }
  29.  
  30.                list($key, $val) = explode(': ', $header);
  31.                $headers[ strtolower($key) ] = $val;
  32.            }
  33.  
  34.            if ( !preg_match('#^image/(png|jpeg|gif)$#', $headers['content-type']) ) {
  35.                $error = 'Файл не является изображением';
  36.            }
  37.            else if ( $headers['content-length'] < 10000 ) {
  38.                $error = 'Изображение слишком маленькое';
  39.            }
  40.            else if ( $headers['content-length'] > 1000000 ) {
  41.                $error = 'Изображение слишком большое';
  42.            }
  43.            else {
  44.                $data = '';
  45.                
  46.                while ( !feof($fh) ) {
  47.                    $data .= fread($fh, 8192);
  48.                }
  49.                
  50.                echo( 'data:' . $headers['content-type'] . ';base64,' . base64_encode($data) );
  51.            }
  52.         }
  53.        
  54.         fclose($fh);
  55.     }
  56. }
  57.  
  58. if ($error) {
  59.     echo("0$error");
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement