веб-страница не печатает информацию о Winsock

0

Я пытаюсь отправить данные из приложения 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'];
    }
?>

Буду признателен за любую помощь или руководство. Благодарю.

  • 0
    Попробуйте изменить 1.1 на 1.0
Теги:

2 ответа

0

Вы смешиваете пост и получаете
Используйте $ _GET для доступа к своим данным, потому что ваши данные добавляются к URL-адресу

Попробуй это:

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

это должно работать, но вы должны подумать о том, чтобы изменить свой тип запроса на GET в коде C, а также сделать ваш код понятным и простым

То, что вы делаете здесь, неоднозначно:

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

Потому что вы отправляете параметры, используя пост, и тело сообщения фактически пустое.

Также вы должны опустить ?> В конце вашего php-скрипта.

0
char httprequest[180] =
        "GET /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);

все еще не работает с GET, буфер отправки составляет 151 байт, его довольно странно, проблема должна быть в формате заголовков http, я удалил?> как вы сказали, и то же самое, что и раньше

Ещё вопросы

Сообщество Overcoder
Наверх
Меню