CURL olmadan PHP4 HTTP Post

2 Cevap php

Ben cURL kullanarak olmadan bir HTTP POST göndermek PHP5'ta çalışır aşağıdaki kodu var. PHP 4.3.0 ve üzerinde çalışmak için bu istiyorum:

$opts = array('http' =>
    array(
        'method'  => 'POST',
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n" . "Content-Type: application/json\r\n",
        'content' => $query
    )
);
$context  = stream_context_create($opts);
$result = file_get_contents($url, false, $context);

HTTP bağlamı sadece PHP5 desteklenir. PHP 4.3.0 ile bu işi yapmak için yine de var mı - PHP5 veya cURL yüklü değilse, ben bir geri dönüş yöntemi gerekir.

2 Cevap

Sen. PHP 4 kullanarak olmamalıdır Bu durdurulan ve böylece herhangi bir güvenlik yamaları almaz.

Bir şey kendiniz yazmadan bir göz atın isterseniz, fsockopen() ile başlamak istiyorum. Ne istediğinizi yapabilirsiniz ve bir POST isteği dönüştürmek çok zor olmamalı temel bir örnek vardır. Ben (özünde) Ancak özellikleri ve örneklerin bir sürü online mevcuttur benim PHP uygulama içine kopyalayıp yapıştırın olabilir HTTP numune almak için bir paket dinleyicisi (Wireshark) kullanılır.

Herkes bu yardıma ihtiyacı varsa aşağıdaki gibi bir şey hile yapacak.

        $headers = "POST $url 1.1\r\n"; 
        $headers .= "Content-type: application/x-www-form-urlencoded\r\n";
        $headers .= "Content-Type: application/json\r\n";
        $headers .= "Accept: application/json\r\n";
        if (!empty($body)) {
            $headers .= "Content-length: " . strlen($body) . "\r\n";
        }
        $headers .= "\r\n";

        $body = $query;

        if ($fp = fsockopen($host, 80, $errno, $errstr, 180)) {
            fwrite($fp, $headers . $body, strlen($headers . $body));
            fclose();
        }