http request using fsockopen

From: Rob (reply__at_news_group.please)
Date: 10/25/04


Date: Mon, 25 Oct 2004 12:46:42 GMT

Hello all,

I have a form on page A which is submitted trough a POST method to page B.
On the start of page B I check var $foo. If true I want to "forward" the
request to
page C. Sending the POST data also though the POST method.

I manually create a HTTP request to page C and use the fsockopen method to
sent the request.

As a result I get the requested page C (status code "200 OK" is returned)
but the
POST data is not received/parsed(?). I mean the $_POST array is empty in
page C. All other PHP scripts in page C is executed as expected though.

My questions:
1 Is what I am doing possible in the first place?
2 If so, what is the correct syntax to sent the
  POST data ($query) in the entity body of the request?

My configuration:
  PHP 4.8
  Apache 2.1
  Windows XP SP2

My code:

// In Page B from Page A
if ($foo){

  $url=URL_BASE; // local constant containing the current domain

  if (!preg_match("/http/", $url)) $url = "http://".$url;
  $urlParts = parse_url($url);
  $host = isset($urlParts['host'])?$urlParts['host']:'localhost';
  $port = isset($urlParts['port'])?$urlParts['port']:80;
  $path = isset($urlParts['path'])?$urlParts['path']:"/";

  $errno=null;
  $errstr='';
  $timeout=30;

  $fp=fsockopen($host,$port,$errno,$errstr,$timeout);

  if (!$fp){
   echo "<br/>\n $errstr ($errno) <br/>\n";
  } else {

   $query='';
   foreach($_POST as $i=>$v){
    $query.="$i=$v\r\n";
   }

   // headers
   $out ="POST {$path}page_c.php HTTP/1.1 \r\n";
   $out.="Host: $host \r\n";
   $out.="Content-length: ".strlen($query)." \r\n";
   $out.="Content-type: text/html \r\n";
   $out.="Connection: Close \r\n\r\n";
   $out.=$query." \r\n";

   // send the post data
   fwrite($fp,$out);

   // write page C (results)
   while(!feof($fp)) {
    echo fgets($fp,128);
   }
   fclose($fp);
  }
 }

// end Code...

Thanks in advance Rob



Relevant Pages

  • http request using fsockopen
    ... On the start of page B I check var $foo. ... Sending the POST data also though the POST method. ... I manually create a HTTP request to page C and use the fsockopen method to ...
    (alt.php)
  • Re: Insert record using a var - basic question :(
    ... If the page is submitted with a POST method, ... script would receive both GET and POST data. ... In most cases using $_REQUEST is a really bad idea, ... use $_COOKIE etc. $_REQUEST is useful only in very rare cases. ...
    (comp.lang.php)
  • need help in updating a website using perl script.
    ... I am trying to write a perl script to update a protected bugzilla ... >Code Snippet< ... While trying to process the request: ... But intrestingly when I change the POST method to a GET method I can ...
    (comp.lang.perl.misc)
  • Re: http request using fsockopen
    ... Sending the POST data also though the POST method. ... > I manually create a HTTP request to page C and use the fsockopen method to ... All other PHP scripts in page C is executed as expected though. ...
    (alt.php)
  • Re: LWP UserAgent form post problem
    ... > following link in my browser: ... You're using the POST method there (parameters sent as part of the request ... It's very likely that the server-side process you're trying to ...
    (comp.lang.perl.modules)