本人不懂PHP,请教大虾们一个问题:
我通过libcurl(C)接口,发一些数据给指定的php文件,这些数据存在一个叫buf的数组中,假设接收的文件叫test.php,改文件怎么把buf中的数据解析出来。在线等,回答的满意一定在加分

解决方案 »

  1.   

    libcurl 就是 curl吧.一样的,你给post 过去test.php test.php 接收这个post 数组 解析出来不就好了.
    关键是你的buf数组是怎么存储的?print出来看看.
      

  2.   

     是CURL,关键是发送的程序C写的,怎么post??????不懂PHP,请教大虾
      

  3.   


    给你个参考
    #include "stdio.h"
    #include "stdlib.h"
    #include "winsock2.h"
    #pragma comment(lib,"ws2_32.lib")
    int main(int argc, char* argv[])
    {  SOCKET hsocket;
      SOCKADDR_IN saServer;
      WSADATA     wsadata;
      LPHOSTENT lphostent;
      int     nRet;
      char*   host_name="www.********.com";
      char*   reqHead="POST ********* HTTP/1.1\r\n"   //此为要发送的数据包
            "Accept: */*\r\n"
            "Referer: http://www.*********\r\n"
            "Accept-Language: zh-CN\r\n"
            "User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; BOIE9;ZHCN; twchrome)\r\n"
            "Content-Type: application/x-www-form-urlencoded\r\n"
            "Accept-Encoding: gzip, deflate\r\n"
            "Host: www.*******.com\r\n"
            "Content-Length: 375\r\n"
            "Connection: Keep-Alive\r\n"
            "Cache-Control: no-cache\r\n"        "Cookie: ************** \r\n\r\n"
            "user=test&pass=123";
           
    // 初始化套接字
        if(WSAStartup(MAKEWORD(2,2),&wsadata))
            printf("初始化SOCKET出错!");
        lphostent=gethostbyname(host_name);    
        if(lphostent==NULL)    
            printf("lphostent为空!"); 
        hsocket   =   socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);    
        saServer.sin_family = AF_INET;    
        saServer.sin_port = htons(80);    
        saServer.sin_addr = *((LPIN_ADDR)*lphostent->h_addr_list); 
        // 利用SOCKET连接 
        nRet = connect(hsocket,(LPSOCKADDR)&saServer,sizeof(SOCKADDR_IN));    
        if(nRet == SOCKET_ERROR)    
        {
            printf("建立连接时出错!");    
            closesocket(hsocket);
            return 0;
        }
        // 利用SOCKET发送     nRet = send(hsocket,req,strlen(req),0); 
        if(nRet==SOCKET_ERROR) 
        { 
            printf("发送数据包时出错!"); 
            closesocket(hsocket); 
        } 
        char   Dest[3000];    
        nRet=1;    
        while(nRet>0)    
        { 
            // 接收返回数据包 
            nRet=recv(hsocket,(LPSTR)Dest,sizeof(Dest),0);    
            if(nRet>0)
                Dest[nRet]=0;
            else    
                Dest[0]=0; 
            // 显示返回数据包的大小、内容
            printf("\nReceived   bytes:%d\n",nRet);    
            printf("Result:\n%s",Dest);    
        }
    }
        return 0;
    }
      

  4.   

    大虾,我不是不会C,是不知道PHP怎么取出C发过去的数组里的元素。虽然不是我想要的,但还是把分给你