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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (show 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 <?
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