Login   Register  
PHP Classes
elePHPant
Icontem

File: test_http_post.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Manuel Lemos  >  PHP HTTP protocol client  >  test_http_post.php  >  Download  
File: test_http_post.php
Role: Example script
Content type: text/plain
Description: Emulate a form submission using HTTP POST submitting form field values including file uploads
Class: PHP HTTP protocol client
HTTP client to access Web site pages
Author: By
Last change: Synchronized with CVS version
Date: 2 years ago
Size: 3,155 bytes
 

Contents

Class file image Download
<?php
/*
 * test_http_post.php
 *
 * @(#) $Header: /opt2/ena/metal/http/test_http_post.php,v 1.5 2004/08/11 00:46:11 mlemos Exp $
 *
 */

?><HTML>
<HEAD>
<TITLE>Test for Manuel Lemos' PHP HTTP class to simulate a HTTP POST form submission</TITLE>
</HEAD>
<BODY>
<H1><CENTER>Test for Manuel Lemos' PHP HTTP class to simulate a HTTP POST form submission</CENTER></H1>
<HR>
<UL>
<?php
    
require("http.php");

    
set_time_limit(0);
    
$http=new http_class;
    
$http->timeout=0;
    
$http->data_timeout=0;
    
$http->debug=0;
    
$http->html_debug=1;

    
$url="http://www.cs.tut.fi/cgi-bin/run/~jkorpela/echoraw.cgi";
    
$error=$http->GetRequestArguments($url,$arguments);
    
$arguments["RequestMethod"]="POST";
    
$arguments["PostValues"]=array(
        
"somefield"=>"Upload forms",
        
"MAX_FILE_SIZE"=>"1000000"
    
);
    
$arguments["PostFiles"]=array(
        
"userfile"=>array(
            
"Data"=>"This is just a plain text attachment file named attachment.txt .",
            
"Name"=>"attachment.txt",
            
"Content-Type"=>"automatic/name",
        ),
        
"anotherfile"=>array(
            
"FileName"=>"test_http_post.php",
            
"Content-Type"=>"automatic/name",
        )
    );
    
$arguments["Referer"]="http://www.alltheweb.com/";
    echo 
"<H2><LI>Opening connection to:</H2>\n<PRE>",HtmlEntities($arguments["HostName"]),"</PRE>\n";
    
flush();
    
$error=$http->Open($arguments);

    if(
$error=="")
    {
        
$error=$http->SendRequest($arguments);
        if(
$error=="")
        {
            echo 
"<H2><LI>Request:</LI</H2>\n<PRE>\n".HtmlEntities($http->request)."</PRE>\n";
            echo 
"<H2><LI>Request headers:</LI</H2>\n<PRE>\n";
            for(
Reset($http->request_headers),$header=0;$header<count($http->request_headers);Next($http->request_headers),$header++)
            {
                
$header_name=Key($http->request_headers);
                if(
GetType($http->request_headers[$header_name])=="array")
                {
                    for(
$header_value=0;$header_value<count($http->request_headers[$header_name]);$header_value++)
                        echo 
$header_name.": ".$http->request_headers[$header_name][$header_value],"\r\n";
                }
                else
                    echo 
$header_name.": ".$http->request_headers[$header_name],"\r\n";
            }
            echo 
"</PRE>\n";
            echo 
"<H2><LI>Request body:</LI</H2>\n<PRE>\n".HtmlEntities($http->request_body)."</PRE>\n";
            
flush();

            
$headers=array();
            
$error=$http->ReadReplyHeaders($headers);
            if(
$error=="")
            {
                echo 
"<H2><LI>Response headers:</LI</H2>\n<PRE>\n";
                for(
Reset($headers),$header=0;$header<count($headers);Next($headers),$header++)
                {
                    
$header_name=Key($headers);
                    if(
GetType($headers[$header_name])=="array")
                    {
                        for(
$header_value=0;$header_value<count($headers[$header_name]);$header_value++)
                            echo 
$header_name.": ".$headers[$header_name][$header_value],"\r\n";
                    }
                    else
                        echo 
$header_name.": ".$headers[$header_name],"\r\n";
                }
                echo 
"</PRE>\n";
                
flush();

                echo 
"<H2><LI>Response body:</LI</H2>\n<PRE>\n";
                for(;;)
                {
                    
$error=$http->ReadReplyBody($body,1000);
                    if(
$error!=""
                    
|| strlen($body)==0)
                        break;
                    echo 
HtmlSpecialChars($body);
                }
                echo 
"</PRE>\n";
                
flush();
            }
        }
        
$http->Close();
    }
    if(
strlen($error))
        echo 
"<CENTER><H2>Error: ",$error,"</H2><CENTER>\n";
?>
</UL>
<HR>
</BODY>
</HTML>