清心国度's Archiver

fyhao 发表于 2007-10-2 00:22

php 向远程提交数据

[code]<?php
/*-----------------------------------------------------------
*功能:使用PHP socke 向指定页面提交数据
*
*作者:Honghe.c
*
*说明:post($url, $data)
*
*      $url    = 'http://www.xxx.com:8080/login.php';
*      $data[user] = 'hong';
*      $data[pass] = 'xowldo';
*      echo post($url, $data);
*-----------------------------------------------------------*/

function post($url, $data) {
        
        $url = parse_url($url);
        if (!$url) return "couldn't parse url";
        if (!isset($url['port'])) { $url['port'] = ""; }
        if (!isset($url['query'])) { $url['query'] = ""; }
        
        $encoded = "";
        
        while (list($k,$v) = each($data)) {
                $encoded .= ($encoded ? "&" : "");
                $encoded .= rawurlencode($k)."=".rawurlencode($v);
        }
        
        $fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80);
        if (!$fp) return "Failed to open socket to $url[host]";
        
        fputs($fp, sprintf("POST %s%s%s HTTP/1.0\n", $url['path'], $url['query'] ? "?" : "", $url['query']));
        fputs($fp, "Host: $url[host]\n");
        fputs($fp, "Content-type: application/x-www-form-urlencoded\n");
        fputs($fp, "Content-length: " . strlen($encoded) . "\n");
        fputs($fp, "Connection: close\n\n");
        
        fputs($fp, "$encoded\n");
        
        $line = fgets($fp,1024);
        if (!eregi("^HTTP/1\.. 200", $line)) return;
        
        $results = ""; $inheader = 1;
        while(!feof($fp)) {
                $line = fgets($fp,1024);
                if ($inheader && ($line == "\n" || $line == "\r\n")) {
                $inheader = 0;
        }
        elseif (!$inheader) {
                $results .= $line;
        }
        }
        fclose($fp);
        
        return $results;
}

/*
$url = 'http://video.xxx.com:80/game_vm.php';
$data['gid'] = '1';
echo post($url, $data);
*/

?>[/code]

Super-Tomato 发表于 2007-10-8 12:13

此函數應該參考phpNuke修改的

原網址:
[url]http://www.cgisecurity.com/archive/php/phpnuke-sql-injection-yet-again-will-they-ever-recode-this-thing.shtml[/url]


註: 希望版主轉貼附上原網址

fyhao 发表于 2007-10-27 16:03

虽然达到的功能大致一样,但是打的东西根本不雷同,照你的说法 PHPRPC 是抄 PHPNUKE 的咯?还是PHPNUKE 抄他的???

Super-Tomato 发表于 2007-10-27 19:58

這段php.net已經有提供詳細的說明, 而且樓主所提供的只是參數傳遞少了些和用POST方式傳送出去, 再怎麼看也不會覺得不雷同吧?? fsockopen的應用結構是固定的, 在 PHP4.3 開始通過 TCP/IP 支援 SSL 和 TLS 之後就曾沸沸揚揚的討論過一陣子了.

你該到 PHPRPC 的論壇去看看, 他們這套AJAX是從論壇和網絡所提供的原程式所加強而成的. 而且 PHPRPC 至今才發佈多久呢??

fyhao 发表于 2007-10-27 21:06

此程式上面有版权说明。。。
对啊,其实这些程式结构都是一样的。。。我觉得根本不是抄的问题。
它还是进行 socket 提交,如果有牵涉特别算法,就另当别论。
我举 PHPRPC 只是想做一个例子,基本上我在弄别的程式都写过很多。。。
你又不说 phpnuke 是参考其他的?

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.