通过fsockopen函数实现post表单

如何通过PHP实现POST方式提交表单?下面是实现此功能的函数,主要采用了fsockopen函数。[php]
function post($url,$time_out = "60") {
$urlarr = parse_url($url); // 解析URL,返回其组成部分
$errno = "";
$errstr = "";
$transports = "";
if($urlarr["scheme"] == "https") { // SSL协议
$transports = "ssl://";
$urlarr["port"] = "443";
} else { // HTTP协议
$transports = "tcp://";
$urlarr["port"] = "80";
}
$fp = @fsockopen(
$transports . $urlarr[‘host’], // 协议+主机
$urlarr[‘port’], // 端口
$errno,
$errstr,
$time_out
);
if(!$fp) {
$info = "ERROR: $errno – $errstr\n";
} else {
fputs($fp, "POST " . $urlarr["path"] . " HTTP/1.1\r\n"); // 提交方式,POST || GET
fputs($fp, "Host: " . $urlarr["host"] . "\r\n"); // 主机
fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: " . strlen($urlarr["query"]) . "\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $urlarr["query"] . "\r\n\r\n"); // POST表单数据
while(!feof($fp)) {
$info[] = @fgets($fp, 1024);
}
fclose($fp);
$info = implode(",",$info);
while (list ($key, $val) = each ($_POST)) {
$arg .= $key . "=" . $val . "&";
}
return $info;
}
}[/php]
实现PHP自动POST表单的举例:[php]
if($_POST[‘submit’])
{
//处理POST数据
}
else
{
echo post("http://{$_SERVER[‘HTTP_HOST’]}{$_SERVER[‘PHP_SELF’]}?varname=the value&submit=Submit+Request");
}[/php]

Avatar photo

About Blackford

这是个最好的时代,这是个最坏的时代,这是个充满希望的春天,这是个令人绝望的冬天,我们前面什么都有,我们前面什么都没有。梦想,让我们一次次的走远,又一次次的回头,一个关于人生的梦想还在不断奔跑,带着喜悦和疼痛,不过一切才刚刚开始,并且直到今天也远远没有结束
This entry was posted in PHP服务器脚本 and tagged . Bookmark the permalink.

发表评论

电子邮件地址不会被公开。 必填项已用*标注