如何通过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]
2023年五月 一 二 三 四 五 六 日 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 -
近期文章