• 模拟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/,有时需要翻墙

     提供两个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
    ";
    13             $send .= "Host: $host
    ";
    14             $send .= "Content-type: application/x-www-form-urlencoded
    ";
    15             $send .= 'X-FORWARDED-FOR:8.8.8.8' . "
    ";
    16             $send .= "CLIENT-IP:$ip
    ";//伪造IP
    17             $send .= "REMOTE_ADDR:$ip
    ";//伪造IP,这句并不会发现变化,地址都是127.0.0.1也就是服务器地址,网上说是什么端口映射,难道和cgi什么的有关系?那端口也应该是9000啊,不懂
    18             $send .= "Content-length: " . strlen($data) . "
    ";
    19             $send .= "Connection: close
    
    ";
    20             $send .= $data . "
    
    ";
    21             fwrite($fp, $send, strlen($send));
    22             $back = '';
    23             while(!feof($fp))
    24             {
    25                 $back .= fread($fp, 1024);
    26             }
    27             fclose($fp);


     

  • 相关阅读:
    HDU 2023题解分析
    Java中常见的几种类型转换
    Software Version --hdu1976
    单词数
    Usaco 2.3 Zero Sums(回溯DFS)--暴搜
    9的余数
    mongodb学习(一)
    svg学习(九)path
    svg学习(八)polyline
    qunit学习(一)
  • 原文地址:https://www.cnblogs.com/quinnxu/p/3151730.html
Copyright © 2020-2023  润新知