如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量(转)

PHP 支持libcurl(允许你用不同的协议连接和沟通不同的服务器)。, libcurl当前支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传(当然你也可以使用PHP的ftp扩展), HTTP基本表单上传,代理,cookies,和用户认证。

为了使用CURL函数你需要安装CURL包。PHP 需要你使用CURL 7.0.2-beta或更高版。如果CURL的版本低于7.0.2-beta,PHP将不工作。

要使用PHP的CURL支持,你必须用带有--with-curl[=DIR]参数重新编译PHP(DIR是包含库和头文件的目录)。

这些函数是在PHP 4.0.2中新增得。

一旦你编译了带有CURL支持的PHP,你可以使用curl函数。基本思路是:你使用curl_init()函数初始化CURL会话,而后你可以设置你的所有选项,通过curl_exec()函数执行,最后你可以作用curl_close()函数来结束你的会话。以下是一个例子:是把PHP的主页取回放到一个文件中
Curl_1
 1<?php
 2$ch = curl_init ("http://www.php.net/");
 3$fp = fopen ("php_homepage.txt", "w");
 4
 5curl_setopt ($ch, CURLOPT_FILE, $fp);
 6curl_setopt ($ch, CURLOPT_HEADER, 0);
 7
 8curl_exec ($ch);
 9curl_close ($ch);
10fclose ($fp);
11?>


使用如题所述方法进行文件post操作:
Curl
1$URL="www.mysite.com/test.php"
2$ch = curl_init(); 
3curl_setopt($ch, CURLOPT_URL,"https://$URL"); 
4curl_setopt($ch, CURLOPT_POST, 1); 
5curl_setopt($ch, CURLOPT_POSTFIELDS, "Data1=blah&Data2=blah");
6curl_exec ($ch); 
7curl_close ($ch); 

用普通文件方法post
File_Post_Code
 1<?php
 2function posttohost($url, $data) {
 3$url = parse_url($url);
 4if (!$urlreturn "couldn't parse url";
 5if (!isset($url['port'])) { $url['port'= ""; }
 6if (!isset($url['query'])) { $url['query'= ""; }
 7
 8$encoded = "";
 9
10while (list($k,$v= each($data)) {
11$encoded .= ($encoded ? "&" : "");
12$encoded .= rawurlencode($k)."=".rawurlencode($v);
13}
14
15$fp = fsockopen($url['host'], $url['port'? $url['port': 80);
16if (!$fpreturn "Failed to open socket to $url[host]";
17
18fputs($fp, sprintf("POST %s%s%s HTTP/1.0\n", $url['path'], $url['query'? "?" : "", $url['query']));
19fputs($fp, "Host: $url[host]\n");
20fputs($fp, "Content-type: application/x-www-form-urlencoded\n");
21fputs($fp, "Content-length: " . strlen($encoded. "\n");
22fputs($fp, "Connection: close\n\n");
23
24fputs($fp, "$encoded\n");
25
26$line = fgets($fp,1024);
27if (!eregi("^HTTP/1\.. 200", $line)) return;
28
29$results = ""$inheader = 1;
30while(!feof($fp)) {
31$line = fgets($fp,1024);
32if ($inheader && ($line == "\n" || $line == "\r\n")) {
33$inheader = 0;
34}
35elseif (!$inheader) {
36$results .= $line;
37}
38}
39fclose($fp);
40
41return $results;
42}
43?> 

转载于:https://www.cnblogs.com/ovliverlin/archive/2008/04/20/1162297.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值