Re: How to suppress HTTP headers?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



hah.. I should have mentioned this as well, but my brain is absorbed in...  sockets... and xml..  and sending headers manually via fputs..   nothing relative to this discussion at all..  hah..

<?php

$_XML_DATA = "<xmlGoesHere></xmlGoesHere>\r\n";
    
$_FULL_XML_REQUEST  = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n";
$_FULL_XML_REQUEST .= "<!DOCTYPE REQUEST_GROUP SYSTEM \"SomeXMLdtd.dtd\">\r\n";
$_FULL_XML_REQUEST .= $_XML_DATA;
  
$_XML_REQUEST_HEADER  = "POST /path/to/script.php HTTP/1.1\r\n";
$_XML_REQUEST_HEADER .= "Host: my.server.com\r\n";
$_XML_REQUEST_HEADER .= "Content-type: application/x-www-form-urlencoded\r\n";
$_XML_REQUEST_HEADER .= "Content-length: " . strlen($_FULL_XML_REQUEST) . "\r\n";
$_XML_REQUEST_HEADER .= "Connection: close\r\n\r\n";

$fp = fsockopen("my.server.com", 80, &$_FSOCK_ERR_NUMBER, &$_FSOCK_ERR_MESSAGE, 100);
  ~
if(!$fp){
  exit("Failed to open socket...");
}

if (fputs($fp, $_XML_REQUEST_HEADER . $_FULL_XML_REQUEST) === FALSE) {
  exit("Failed to send request...");
}

while(!feof($fp)){
  ~  
  // "@" error suppression used on fgets() due to bug in PHP that reports the following waring:
  // Warning: fgets(): SSL: fatal protocol error in /var/www/secure/dev2/panda/DevTools/LandsafeTest/index.php on line XXXX
  // No good solution found online, most people adjust their error reporting to ignore warnings (sloppy!)
  $tmp = @fgets($fp, 4096);
  
  $_XML_RESPONSE .= $tmp;
}
echo "<pre>\n";
echo $_XML_RESPONSE;
  
fclose($fp);
?>


= = = Original message = = =

Or use sockets...

http://us3.php.net/manual/en/function.fsockopen.php

Just don't send any HTTP headers.


kgt


tg-php@xxxxxxxxxxxxxxxxxxxxxx wrote:

>BTW: I made a mistake last time. Apparently with CLI there are headers.  You can use "php -q" to suppress headers when using PHP via CLI.  Odd.  Not sure I had to do that when I wrote a few CLI scripts before.  Oh well, something to play with another day (don't have time to check it right now).
>
>So another thing I may be wrong on.. but a thought..  If you use the header() command, does it prevent the web server from generating it's own headers?
>
>That is, if you send out "<html><body>Something</body></html" does the web server automatically generate the headers but if you use header() it uses what PHP generates rather than it's own?
>
>If so.. can you just do:
>header();
>
>With nothing in it to suppress headers?
>
>Or can you do something like:
>
>header("<xml>stuff</xml>");
>
>?
>
>Just thinking out loud since nobody else has responded yet :)
>
>-TG
>
>= = = Original message = = =
>
>I knew my description was a bit mangled; I was trying to keep it short.
>Sorry. Take two:
>
>A "remote server" is sending event records to "my server" using HTTP POST
>requests to http://my.server.com/storeit.php, let's say. The remote server
>expects acknowledgement by way of a response to its request. My script
>("storeit.php") must respond like it would any other page request over HTTP;
>it simply uses echo/print to produce a response.
>
>This would work fine EXCEPT that the remote server is *badly* written. Its
>flaw? The HTTP headers included in my response trip it up. For some reason,
>it expects just the *contents* of the response, without headers.
>
>Here's a mock up of the current situation:
>
>  --->Received from remote server
>  HTTP/1.0 storeit.php POST
>  Content-Type: text/xml
>  Content-Length: 35
>  Host: 11.11.11.11
>
>  <DATA>
>    <KEY>value</KEY>
>  </DATA>
>
>  <--- Reply sent to remote server 
>  HTTP/1.0 200 OK
>  Content-Type: text/xml
>  Content-Length: 34
>  Host: 22.22.22.22
>
>  <ACK>
>    <ERROR>0</ERROR>
>  </ACK>
>
>
>What the reply needs to look like is:
>
>  <--- Reply sent to remote server 
>  <ACK>
>    <ERROR>0</ERROR>
>  </ACK>
>
>
>No headers.
>
>-----Original Message-----
>From: tg-php@xxxxxxxxxxxxxxxxxxxxxx [mailto:tg-php@xxxxxxxxxxxxxxxxxxxxxx] 
>Sent: Tuesday, August 16, 2005 11:00 AM
>To: php-general@xxxxxxxxxxxxx
>Cc: thomascapote@xxxxxxxxxxxxxxxxxx
>Subject: Re:  How to suppress HTTP headers?
>
>So their page POSTs to a PHP page that you've created?  I'm not seeing where
>headers come into play there, they're on output, not input.  Maybe I just
>stayed up too late last night, but I'm having trouble wrapping my brain
>around the problem.
>
>One thing I did notice was you mentioned switches for CGI vs CLI SAPI.  I
>expect that there wouldn't be a switch for CLI because no headers are needed
>when using PHP command line, therefore nothing to turn off.  Again, maybe
>I'm misunderstanding the situation but thought I'd throw that thought in the
>ring.
>
>Maybe you can describe the interaction between the system you can't control
>and your PHP scripts better.  Walk us through it step by step.
>
>-TG
>
>= = = Original message = = =
>
>I am coding a PHP page to deal with a badly implemented automated status
>update script on a remote server (that I do not control) which fails if my
>response to it's POST request has HTTP headers. Go figure. So the question
>is "How do I NOT send HTTP headers in my response?" or "How can my script
>suppress headers completely?" Whatever the solution, it should affect only
>this page/script.
>
>In chapter 43, the PHP Manual states: "Though the CGI SAPI provides a way to
>suppress HTTP headers, there's no equivalent switch to enable them in the
>CLI SAPI." How would one suppress HTTP headers, as noted above, in the CGI
>SAPI for a particular page on my site?
> 
>Somebody, please help.
>--TC.


___________________________________________________________
Sent by ePrompter, the premier email notification software.
Free download at http://www.ePrompter.com.

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux