HTTP-запрос вырезает данные после знака амперсанда

#php #c #wininet

#php #c #wininet

Вопрос:

Я сделал HTTP-запрос из приложения на C , используя wininet, и он успешно отправляет данные в php-файл, используя следующие функции winapi

 InternetOpen()
InternetConnect()
HttpOpebnRequest()
HttpSendRequest()
  

теперь он отправляет данные в php-файл, все в порядке, но он не отправляет все параметры

например, у меня есть этот параметр

 username=jade101amp;password=svetlana123amp;submit=yes
  

Он просто отправляет только username=jade101 , а остальное выбрасывает.

php, который я использовал для получения данных, выглядит следующим образом

 <?php
$data = $_GET['info'];
$fp = fopen('logga.txt','a ');
fwrite($fp, $data);
fclose($fp);

?>
  

Что я не понимаю правильно?

Ответ №1:

В первую очередь кодирование с использованием CPP и достаточное знание PHP, что я могу сказать, глядя на ограниченный код, — это использование $ _GET .

Как вы отправляете данные в файл php? Это путем вызова самого PHP-скрипта путем добавления строки

«имя пользователя=jade101 amp; пароль = svetlana123 amp;отправить=да»

к чему это?

В любом случае, $ _GET должен будет фиксировать каждую переменную отдельно. Что-то вроде:

 $uname = $_GET['username'];    
$upass = $_GET['password'];    
$sflag = $_GET['submit'];    
  

Вы также можете попробовать:

 $data = $_SERVER["REQUEST_URI"];
  

Чтобы захватить полный URI, начиная с имени скрипта, и проанализировать строку, как вам нравится позже.

Я не понимаю, почему проблема существует в коде C , если только буферы отправки не были неправильно использованы, но эта реализация не видна в этом коде.