/[cvs]/nfo/php/libs/org.netfrag.elib/lib_http.php.inc
ViewVC logotype

Annotation of /nfo/php/libs/org.netfrag.elib/lib_http.php.inc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (hide annotations) (vendor branch)
Wed Jan 23 17:40:34 2002 UTC (22 years, 5 months ago) by cvsjoko
Branch: nfo, MAIN
CVS Tags: v003, HEAD
Changes since 1.1: +0 -0 lines
initial

1 cvsjoko 1.1 <?
2    
3     class HttpLib {
4    
5     function HttpLib() {
6    
7     }
8    
9     function redirect($args) {
10    
11     // define default parameters
12    
13     $method = 'GET';
14     $host = '';
15     $url = '';
16     $uri = '';
17    
18     $bool_limitToArgs = 1;
19     //$data = array();
20     $request_data = '';
21     $request_data_arr = array();
22    
23     // process args to parameters
24    
25     isset($args['method']) && ($method = $args['method']);
26     isset($args['host']) && ($host = $args['host']);
27     isset($args['url']) && ($url = $args['url']);
28     isset($args['limitToArgs']) && ($bool_limitToArgs = $args['limitToArgs']);
29    
30     // determine/merge data to be passed on
31     // there are three different kinds of data here:
32     // a) data which is already set from "HTTP_GET_VARS" or "HTTP_POST_VARS" (base) (linked to "$tracking-><state>")
33     // b) data which should modify this (base-)data via "$args['data']" (must be converted to "$request_data"-format)
34     // c) data which should modify this (base-)data via "$args['request_data']" (is already in proper "$request_data"-format)
35    
36     // a)
37     if (!$bool_limitToArgs) {
38     global $HTTP_GET_VARS, $HTTP_POST_VARS;
39     $request_data_arr = array_merge($HTTP_GET_VARS, $HTTP_POST_VARS);
40     }
41    
42     // b)
43     if (isset($args['data'])) {
44     $request_data_arr = array_merge($request_data_arr, $args['data']);
45     unset($request_data_arr['x']);
46     unset($request_data_arr['y']);
47     }
48    
49     // c) (TODO)
50     // TODO: merge both together!!! (for this we'd need a "queryString2ComplexHash()"-function)
51     // isset($args['request_data']) && ($request_data = $args['request_data']);
52    
53    
54     // build "request-data"-string
55     $request_data = $this->getRequestString($request_data_arr);
56    
57     // modify parameters
58    
59     if (!$host) {
60     global $SERVER_NAME;
61     $host = $SERVER_NAME;
62     }
63     if (!$url) {
64     global $PHP_SELF;
65     $url = $PHP_SELF;
66     }
67    
68     /*
69     // Replace 'http://' with the empty string
70     // Get the Host address substring
71     // Get the URI of the desired Resource
72     $url = preg_replace("@^http://@i", "", $url);
73     $host = substr($url, 0, strpos($url, "/"));
74     $uri = strstr($url, "/");
75     */
76    
77     // do redirection
78    
79     switch(strtolower($method)) {
80    
81     case 'get':
82    
83     // build request-string
84     $request_string = $url . '?' . $request_data;
85     //print $request_string . "<br>";
86     //exit;
87     Header('Location: ' . $request_string);
88     exit;
89     break;
90    
91     case 'post':
92    
93     // DOES NOT WORK!!!!
94     // CAN NOT WORK, because sending a request from here (php-script) will not get the same session associated with the server
95     // maybe we can solve this differently, but for now: forget about POSTing
96    
97     // build cookie-data
98     $varname_PhpSessionId = ini_get('session.name');
99     global $$varname_PhpSessionId;
100     $sessionid = $$varname_PhpSessionId;
101     $cookie = $varname_PhpSessionId . "=" . $sessionid . ";";
102    
103     // build request-string
104     $request_header =
105     "POST " . $url . " HTTP/1.1\r\n" .
106     "Host: " . $host . "\r\n" .
107     //"Cookie: " . $cookie . "\r\n" .
108     "Content-type: application/x-www-form-urlencoded\r\n" .
109     "Content-length: " . strlen($request_data) . "\r\n" .
110     "\r\n" .
111     $request_data .
112     "&PHPSESSID=$sessionid"
113     ;
114    
115     // debug request-header
116     print $request_header . "<br>";
117     //exit;
118    
119     // send request (post) and get response
120     if ($response = $this->request($host, 80, $request_header)) {
121     // output response
122     echo "response-begin<br>";
123     echo $response;
124     echo "<br>";
125     echo "response-end<br>";
126     }
127    
128    
129     break;
130    
131     }
132    
133     }
134    
135     function request($host, $port, $request_header) {
136    
137     // open connection to server
138     $fp = fsockopen($host, $port, $err_num, $err_msg, 30);
139     if ($fp) {
140    
141     // send post-request
142     fputs($fp, $request_header);
143    
144     // get response
145     $response = '';
146     while (!feof($fp))
147     $response .= fgets($fp, 1024);
148     fclose($fp);
149    
150     return $response;
151    
152     }
153    
154     }
155    
156    
157     function getRequestString($requestData) {
158     $arr_subkeys = array();
159     $simpleHash = nestedHash2simpleHash($requestData, 0, &$arr_subkeys);
160     $retval = '';
161     while( list($key, $value) = each($simpleHash) ) {
162     if (!is_array($value)) {
163     $retval .= urlencode($key) . '=' . urlencode($value) . '&';
164     }
165     }
166     $retval = substr($retval, 0, strlen($retval) - 1);
167     return $retval;
168     }
169    
170    
171     }
172    
173     ?>

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed