HTTP Temel kimlik doğrulaması kullanarak PHP itibaren Sayı FORMU POST Talebi

2 Cevap php

Bunu yapmak için nispeten düz ileri bir şeydir, ve benim google becerileri sadece bu vesileyle beni başarısız olduğunu umuyoruz. Ben PHP karşı POST HTTP isteğini gerçekleştirmek için istediğiniz bir BASIC kimlik doğrulama korunan kaynak var.

I Authentication: Basic (encrypted u/p data) çalışmak görünmedi başlıklarını içine enjekte denedim - bu yüzden merak ediyorum, yetkileri Greyskull i StackOverflow herhangi bir rehberlik sağlamak anlamına gelebilir.

$req .= "&cmd=_initiate_query";
$header = "POST /someendpoint HTTP/1.1\r\n".
    	"Host:example.com\n".
    	"Content-Type: application/x-www-form-urlencoded\r\n".
    	"User-Agent: PHP-Code\r\n".
    	"Content-Length: " . strlen($req) . "\r\n".
    	"Connection: close\r\n\r\n";
$fp = fsockopen ('ssl://example.com', 443, $errno, $errstr, 30);
if (!$fp) {
    // HTTP ERROR
} else {
    fputs ($fp, $header . $req);
    while (!feof($fp)) {
    	$result .= fgets ($fp, 128);
    }
    fclose ($fp);
}

2 Cevap

Kullanımı:

$header = "POST /someendpoint HTTP/1.1\r\n".
        "Host:example.com\n".
        "Content-Type: application/x-www-form-urlencoded\r\n".
        "User-Agent: PHP-Code\r\n".
        "Content-Length: " . strlen($req) . "\r\n".
        "Authorization: Basic ".base64_encode($username.':'.$password)."\r\n".
        "Connection: close\r\n\r\n";

Çalışması gerekir - Eğer Temel kimlik doğrulama sistemi olduğuna emin misin? Bu CharlesProxy bir kimlik doğrulama sağlamak için gibi bir şey kullanarak ham üstbilgisi verileri izlemeye değer olabilir (ve siz de yetkilendirme dize kopyalamak sonra mümkün olacak!).

İşte POST isteklerini gerçekleştirmek için kullanabileceğiniz bir fonksiyon. Umarım ne istediğinizi yapabilirsiniz:

function http_post($server, $port, $url, $vars) {

// get urlencoded vesion of $vars array 
$urlencoded = ""; 

foreach ($vars as $Index => $Value) 
	$urlencoded .= urlencode($Index ) . "=" . urlencode($Value) . "&"; 

$urlencoded = substr($urlencoded,0,-1);  

$headers = "POST $url HTTP/1.0\r\n" 
. "Content-Type: application/x-www-form-urlencoded\r\n" 
. "Content-Length: ". strlen($urlencoded) . "\r\n\r\n"; 

$fp = fsockopen($server, $port, $errno, $errstr, 10); 
if (!$fp) return "ERROR: fsockopen failed.\r\nError no: $errno - $errstr"; 

fputs($fp, $headers); 
fputs($fp, $urlencoded); 

$ret = ""; 
while (!feof($fp)) $ret .= fgets($fp, 1024); 

fclose($fp); 
return $ret; }

Ve burada bir API için POST değişkenler üzerinde iletmek için kullanarak bana bir örnek

$response = http_post("www.nochex.com", 80, "/nochex.dll/apc/apc", $_POST);