Başlığı ile PHP POST () ve Kötü başlığı sorunlar

5 Cevap php

Ben PHP başlıkları gönderme ile bir dumbfounding sorunu geldim. Ben SO ve diğer sitelerde okuma yaklaşık 45 dakika geçirdim ve benim sorun için bir meşru nedeni ile gelemiyorum.

Ben başka bir sunucuya bir POST isteği göndermek gerekiyor ve ben değerleri ayarlamak için PHP header () fonksiyonu kullanıyorum. Aşağıda örnek kod var.

    $server = 'http://fakedomain.com';
    $server_path = '/';
    $request = 'key=value&key2=value2';
    header("POST $server_path HTTP/1.1" );
    header("Host: $server\r\n" );
    header("Content-type: application/x-www-form-urlencoded\r\n" );
    header("Content-length: ".strlen($request)."\r\n" );
    header("Connection: close\r\n\r\n" );
    header($request);

Ben çeşitli seçenekler denedim ama bunların her biri benim log dosyası aynı hata sonuçları

malformed header from script. Bad header=POST / HTTP/1.1: php5.cgi

Ben sadece el HTTP post istekleri göndermek için çok fazla ihtiyacı olmamıştır bir deneyim PHP programcısı değilim.

Ben bu yöntemi kullanmaya karar verdi bu yüzden bu yüzden kod tarayıcısını yönlendirmek istiyorum.

Am I doing it right?

Is there some other way that is standard and I just don't know about?

5 Cevap

header (), bir response başlığı gönderir.

Eğer arka uç, bir request yapmak istiyorum gibi geliyor.

Yani muhtemelen isteği yapmak için curl kullanmak istiyorum.

Eğer yanıtı işleme bittiğinde, kullanıcı aracısı (tarayıcı) başlığıyla çeşit göndermek istiyorsanız, o zaman () uygun olacaktır header.

Başlığı fonksiyonlar başlıkları müşteriye iade ile ilgili, ben size sonrası isteği yapmak için cURL kullanarak içine bakmak öneririm: http://www.php.net/cURL

Eğer başka bir sayfaya kullanıcıyı yönlendirmek istiyorsanız, kullanmanız gereken

header("Location: http://domain.com/some.other.page?x=y");

Eğer yönlendirme sayfasına POST değişkenler göndermek için kullanıcı istiyorsanız JavaScript kullanmak gerekecektir.

<html>
<head>
<title>Redirect</title>
</head>
<body onload="document.myform.submit()">
<form name="myform" action="http://domain.com/some.other.page" method="POST">
<input type="hidden" name="x" value="y">
</form>
</body>
</html>

Timdev cevabı üzerine genişletilmesi, burada kullanmak istiyorum cURL bulunuyor:

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://www.target.com/script.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "postvar1=value1&postvar2=value2&postvar3=value3");
curl_exec ($ch);
curl_close ($ch); 
?>

Ben benim için çalıştı gönderme basit bir html formu denedi

    <?php
    if( $dev === 'sample1' || $dev === 'sample2' )  {

?>
    <form name="frmpostdata" action="mystatement.php" method="post">
        <input type="hidden" name="cmsReq" value="MobApp" />
        <input type="hidden" name="cardno" value="<?php echo $chkTkn['cardno'];?>" />
        <input type="hidden" name="cardPwd" value="<?php echo $chkTkn['pwd'];?>" />
        <input type="submit" style="display:none;" name="Submit" value="" />
    </form>
    <script>
        document.frmpostdata.submit();
    </script>
<?php   
        exit;
    }
    ?>