2012-06-15 4 views
1

Есть ли аналогичная функция для http_post_fields от pecl_http? мой текущий хост устанавливает только расширения из http://pear.php.net/ (не знаю, почему, но я не SSH доступа, а скорее веб-интерфейса, а также может устанавливать только расширения, которые Avai. оттуда)аналогичная функция для http_post_fields?

вот мой код

<?php 
    $files = array(
     array(
      'name' => 'torrent',   // Don't change 
      'type' => 'application/x-bittorrent', 
      'file' => '0-273-70244-0.pdf.torrent'   // Full path for file to upload 
     ) 
    ); 

    $http_resp = http_post_fields('http://torcache.net/autoupload.php', array(), $files); 
    $tmp = explode("\r\n", $http_resp); 
    $infoHash = substr($tmp[count($tmp) - 1], 0, 40); 
    var_dump($infoHash); 
    unset($tmp, $http_resp, $files); 

в настоящее время это не работает, как им становится неопределенной функцией для http_post_fields

+0

PEAR не является расширением, это просто php-библиотеки, которые вы можете скачать самостоятельно. Как и любые другие файлы .php, вам нужно просто включить их, как вы делаете с другими файлами .php. – zerkms

+0

@zerkms PECL_HTTP - это расширение, которое мне нужно, поэтому я не могу включить его, http: //pecl.php. net/package/pecl_http, мой хост разрешает только расширения из библиотеки PEAR, а PECL_HTTP отсутствует в этой библиотеке, поэтому мне нужно аналогичное расширение, которое имеет те же функции, что и PECL_HTTP из библиотеки PEAR –

+0

«Мой хост разрешает только расширения из библиотеки PEAR», --- PEAR ** не является расширением ** php, и на самом деле им не нужно «устанавливать», например, PECL. PEAR - это просто репозиторий php-библиотек, который вы можете копировать и распространять с помощью своего проекта без помощи вашего провайдера. – zerkms

ответ

2

Чтобы загрузить торренты torcache я просто использовать:

<?php 
$upload_result = curl_upload('http://torcache.net/autoupload.php','torrent','/absoulte_full_path_to_torrent/torrent.torrent'); 

function curl_upload($url,$fileFormAttribute,$file){ 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_HEADER, 0); 
     curl_setopt($ch, CURLOPT_VERBOSE, 1); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)"); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_POST, true); 
     $post = array($fileFormAttribute=>"@".$file); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
     $response = curl_exec($ch); 
     return $response; 
} 
?> 

$upload_result будет содержать торрент хэша, если успех, он потерпит неудачу, если ее не абсолютный путь к потоку.

+0

Я получаю пустую веб-страницу при использовании этого, я попробовал var_dump $ upload_result и получил bool (false) –

+0

исправил это; используя linux абсолютный путь работает –

+0

lol Я упомянул путь абзаца дважды, он меня тоже; p –

1

есть множество способов для отправки данных из PHP, вот несколько, чтобы вы начали:

Str EAMS

Используйте stream context, чтобы открыть (с fopen) в URL-адрес с почтовыми данными, которые вы хотите отправить образец

function do_post($url, $data) 
{ 
    $params = array('http' => array(
       'method' => 'POST', 
       'content' => $data 
      )); 

    $ctx = stream_context_create($params); 
    $fp = @fopen($url, 'rb', false, $ctx); 
    if (!$fp) { 
    throw new Exception("Problem with $url, $php_errormsg"); 
    } 
    $response = @stream_get_contents($fp); 
    if ($response === false) { 
    throw new Exception("Problem reading data from $url, $php_errormsg"); 
    } 
    return $response; 
} 

кода адаптированного Wez Furlong.

CURL

Чтобы использовать CURL расширение PHP должны быть доступны, это чаще всего не в эти дни, но зависит от хозяина.

function do_post($url, $data) 
{ 
    $ch = curl_init($url); 

    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

    $response = curl_exec($ch); 
    curl_close($ch); 
    return $response; 
} 

Образец образца, адаптированный из Lorna Jane.

+0

Эта строка: 'curl_setopt ($ локон, CURLOPT_RETURNTRANSFER, правда);' должно быть: 'curl_setopt ($ ч, CURLOPT_RETURNTRANSFER, правда);' –

+1

Благодаря @NateCook - исправлено! –

Смежные вопросы