未打印winsock信息的网页

tjvv9vkg  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(290)

我正试图从一个 winsock php脚本的应用程序。我已经尝试了各种头类型没有任何成功,我似乎找不到足够的信息。
发送了数据,但是php脚本没有打印任何结果,所以我认为错误是类型。
c winsock代码

int main()
{
    SOCKADDR_IN sock;
    SOCKET s;
    WSADATA wsa;
    int lengthofrequest = 0;
    char httprequest[180] =
        "POST /test.php?name=alex&password=secret HTTP/1.1\r\n"
        "Host: 127.0.0.1\r\n"
        "Pragma: no-cache\r\n"
        "Content-type: text/html\r\n"
        "Connection: close\r\n"
        "Content-Length: 25\r\n"
        "\r\n";

    lengthofrequest = strlen(httprequest);

    // init winsock

    if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
        return WSASYSNOTREADY;

    sock.sin_addr.s_addr = inet_addr("127.0.0.1");
    sock.sin_family = AF_INET;
    sock.sin_port = htons(80);

    // create socket

    s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (s == INVALID_SOCKET)
        return 1;

    // connect to the http panel

    int conn = connect(s, (SOCKADDR*)&sock, sizeof(sock));
    if (conn < 0)
        return 1;

    // send http header

    send(s, httprequest, lengthofrequest, 0);

    // close socket

    closesocket(s);
    WSACleanup();

    return 0;
}

php脚本

<?php
    if(isset($_POST['name'], $_POST['password']))
    {
       echo $_POST['name'];
       echo $_POST['password'];
    }
?>

我将感谢任何帮助或指导。谢谢。

kx7yvsdv

kx7yvsdv1#

你是在混淆视听
使用$\u get访问您的数据,因为您的数据已附加到url
试试这个:

<?php
    if(isset($_GET['name'], $_GET['password']))
    {
       echo $_GET['name'];
       echo $_GET['password'];
    }

这应该是可行的,但是您应该考虑更改您的请求类型,以使您的代码更清晰和简单
你在这里做的是模棱两可的:

"POST /test.php?name=alex&password=secret HTTP/1.1\r\n"

因为您正在使用post发送get参数,而post主体实际上是空的。
您还应该在php脚本的末尾省略?>。

相关问题