6 //Retv[0]:operation exitcode
9 if(!isset($_GET['cmd'])){
14 if(strcmp($cmd, 'httpreq') == 0){
15 if(!isset($_GET['url'])){
19 $response = sendHTTPQuery($url);
25 // from http://www.spencernetwork.org/memo/tips-3.php
27 $url : http://から始まるURL( http://user:pass@host:port/path?query )
28 $method : GET, POST, HEADのいずれか(デフォルトはGET)
30 $post : POSTの時に送信するデータを格納した配列("変数名"=>"値")
32 function sendHTTPQuery($url, $method="GET", $headers="", $post=array(""))
35 $parsedURL = parse_url($url);
37 //URLの存在を確認(fsockopenのエラー抑制のため)
38 if ($parsedURL && $parsedURL['host']) {
39 $ip = getHostByName($parsedURL['host']);
42 if ($long === false || $ip !== long2ip($long)) {
43 //Cannot resolve domain name
58 if (isset($parsedURL['query'])) {
59 $parsedURL['query'] = "?".$parsedURL['query'];
61 $parsedURL['query'] = "";
65 if (!isset($parsedURL['port'])) $parsedURL['port'] = 80;
68 $request = $method." ".$parsedURL['path'].$parsedURL['query']." HTTP/1.0\r\n";
71 $request .= "Host: ".$parsedURL['host']."\r\n";
72 $request .= "User-Agent: PHP/".phpversion()."\r\n";
75 if (isset($parsedURL['user']) && isset($parsedURL['pass'])) {
76 $request .= "Authorization: Basic ".base64_encode($parsedURL['user'].":".$parsedURL['pass'])."\r\n";
82 /* POSTの時はヘッダを追加して末尾にURLエンコードしたデータを添付 */
83 if (strtoupper($method) == "POST") {
84 while (list($name, $value) = each($post)) {
85 $POST[] = $name."=".urlencode($value);
87 $postdata = implode("&", $POST);
88 $request .= "Content-Type: application/x-www-form-urlencoded\r\n";
89 $request .= "Content-Length: ".strlen($postdata)."\r\n";
91 $request .= $postdata;
97 $fp = fsockopen($parsedURL['host'], $parsedURL['port']);
105 fputs($fp, $request);
110 $response .= fgets($fp, 65535);
117 $DATA = split("\r\n\r\n", $response, 2);
119 /* リクエストヘッダをコメントアウトして出力 */
120 //echo "<!--\n".$request."\n-->\n";
122 /* レスポンスヘッダをコメントアウトして出力 */
123 //echo "<!--\n".$DATA[0]."\n-->\n";