POST PHP con header () e problemi di header Bad

Mi sono imbattuto in un problema sbalorditivo con l'invio di intestazioni in PHP. Ho trascorso circa 45 minuti a leggere su SO e su altri siti e non riesco a trovare una ragione legittima per il mio problema.

Ho bisogno di submit una richiesta POST a un altro server e sto usando la function PHP header () per impostare i valori. Ho un codice di esempio qui sotto.

$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); 

Ho provato una varietà di opzioni, ma ognuna di esse ha lo stesso errore nel mio file di registro

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

Sono un programmatore PHP con esperienza che non ha avuto molto bisogno di submit manualmente richieste di post HTTP.

Voglio che il codice reindirizzi il browser, ecco perché ho deciso di utilizzare questo metodo.

Lo sto facendo bene?

C'è un altro modo standard e non lo so?

header () invia un'intestazione di risposta .

Sembra che tu voglia fare una richiesta , sul back-end.

Quindi probabilmente vorrai usare l' arricciatura per fare la richiesta.

Se una volta terminata l'elaborazione della risposta, si desidera submit una sorta di intestazione all'agente utente (browser), quindi l'intestazione () sarebbe appropriata.

Le funzioni di intestazione si riferiscono alle intestazioni restituite al client, ti suggerisco di esaminare utilizzando cURL per fare la tua richiesta di post: http://www.php.net/cURL

Se si desidera redirect l'utente a un'altra pagina, è necessario utilizzare

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

Se si desidera che l'utente invii le variables POST alla pagina di reindirizzamento, sarà necessario utilizzare JavaScript.

 <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> 

Espandendo la risposta di timdev, ecco la cURL che useresti:

 <?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); ?> 

Ho provato il semplice module html che ha pubblicato per me

  <?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; } ?>