• php post数据的三种方法


    <?php 
    // PHP POST数据的三种方法
    // php有三种方法可以post数据,分别为Curl、socket、file_get_contents:
    
    
    /**
     * Socket版本
     * 使用方法:
     * $post_string = "app=socket&version=beta";
     * request_by_socket('facebook.cn','/restServer.php',$post_string);
     */
    function request_by_socket($remote_server, $remote_path, $post_string, $port = 80, $timeout = 30)
    {
        $socket = fsockopen($remote_server, $port, $errno, $errstr, $timeout);
        if (!$socket) die("$errstr($errno)");
    
        fwrite($socket, "POST $remote_path HTTP/1.0\r\n");
        fwrite($socket, "User-Agent: Socket Example\r\n");
        fwrite($socket, "HOST: $remote_server\r\n");
        fwrite($socket, "Content-type: application/x-www-form-urlencoded\r\n");
        fwrite($socket, "Content-length: " . (strlen($post_string) + 8) . '\r\n');
        fwrite($socket, "Accept:*/*\r\n");
        fwrite($socket, "\r\n");
        fwrite($socket, "mypost=$post_string\r\n");
        fwrite($socket, "\r\n");
        $header = "";
        while ($str = trim(fgets($socket, 4096))) {
            $header .= $str;
        } 
        $data = "";
        while (!feof($socket)) {
            $data .= fgets($socket, 4096);
        } 
        return $data;
    } 
    
    
    
    /**
     * Curl版本
     * 使用方法:
     * $post_string = "app=request&version=beta";
     * request_by_curl('http://facebook.cn/restServer.php',$post_string);
     */
    function request_by_curl($remote_server, $post_string)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $remote_server);
        curl_setopt($ch, CURLOPT_POSTFIELDS, 'mypost=' . $post_string);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_USERAGENT, "Jimmy's CURL Example beta");
        $data = curl_exec($ch);
        curl_close($ch);
        return $data;
    } 
    
    
    /**
     * 其它版本
     * 使用方法:
     * $post_string = "app=request&version=beta";
     * request_by_other('http://facebook.cn/restServer.php',$post_string);
     */
    function request_by_other($remote_server, $post_string)
    {
        $context = array(
            'http' => array(
                'method' => 'POST',
                'header' => 'Content-type: application/x-www-form-urlencoded' .
                            '\r\n'.'User-Agent : Jimmy\'s POST Example beta' .
                            '\r\n'.'Content-length:' . strlen($post_string) + 8,
                'content' => 'mypost=' . $post_string)
            );
        $stream_context = stream_context_create($context);
        $data = file_get_contents($remote_server, false, $stream_context);
        return $data;
    } 
    
    ?>


    来源:http://www.oschina.net/code/snippet_127872_6370

  • 相关阅读:
    android 6.0 新特性
    接口_ _接口回调机制
    bug_ _
    volley_缓存介绍
    bug__android studio 出现布局文件不提示,且点击代码不能跟踪代码
    文章--笔记本蓝牙可以搜索到手机,但是怎么连接不了?
    Dialog_ _dialog系统样式讲解 及 透明背景
    动画_ _ Android应用开发之所有动画使用详解
    view坐标_ _ Android应用坐标系统全面详解
    html__脚本之家
  • 原文地址:https://www.cnblogs.com/meieiem/p/2734986.html
Copyright © 2020-2023  润新知