模拟post提交

利用php模拟提交一般会有两种socket connection和curl

这两种操作大同小异,只不过相比较来说curl更加直观一些,不像socket需要自己构造头信息,不过curl在64位windows下有些问题,以前没有注意,最近一次安装wamp server发现开启curl后,在apache的错误日志中会发现curl无法启动:

<b>Warning</b>:  PHP Startup: Unable to load dynamic library 'c:/wamp/bin/php/php5.3.13/ext/php_curl.dll' - 应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志,或使用命令行 sxstrace.exe 工具。

 in <b>Unknown</b> on line <b>0</b><br />

 

这个原因应该是官方给出的版本并没有对64位做开发,找了几个64位的curl dll文件,我用的wamp server的线程安全版本,替换文件,搞定!只分享成功,不介绍资源地址的博主都是流氓,这里给出dll文件下载地址http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/,有时需要FQ

 提供两个demo

 1    $url = "http://localhost/base.php";
 2     $tid = 30996033;            
 3     $data = "action=vote&tid=$tid";
 4     
 5     $header = array(
 6             'REMOTE_ADDR:8.8.8.9',
 7             'CLIENT-IP:8.8.8.9',
 8             'X-FORWARDED-FOR:8.8.8.9',
 9     );
10     
11     $ch = curl_init();
12     curl_setopt($ch, CURLOPT_URL, $url);
13     curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
14     curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
15     $out = curl_exec($ch);

 

 1        $host = 'localhost';
 2             $path = '/base.php';
 3             $tid = 30996033;
 4             $data = "action=vote&tid=$tid";
 5             $ip = '8.8.8.8';
 6             $fp = fsockopen($host,80);
 7             if(!$fp)
 8             {
 9                     die('创建连接失败,检查主机地址或网络连接');
10             }
11             //构造http请求串
12             $send = "POST $path HTTP/1.1\r\n";
13             $send .= "Host: $host\r\n";
14             $send .= "Content-type: application/x-www-form-urlencoded\r\n";
15             $send .= 'X-FORWARDED-FOR:8.8.8.8' . "\r\n";
16             $send .= "CLIENT-IP:$ip\r\n";//伪造IP
17             $send .= "REMOTE_ADDR:$ip\r\n";//伪造IP,这句并不会发现变化,地址都是127.0.0.1也就是服务器地址,网上说是什么端口映射,难道和cgi什么的有关系?那端口也应该是9000啊,不懂
18             $send .= "Content-length: " . strlen($data) . "\r\n";
19             $send .= "Connection: close\r\n\r\n";
20             $send .= $data . "\r\n\r\n";
21             fwrite($fp, $send, strlen($send));
22             $back = '';
23             while(!feof($fp))
24             {
25                 $back .= fread($fp, 1024);
26             }
27             fclose($fp);


 

转载于:https://www.cnblogs.com/quinnxu/p/3151730.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值