#php #http #curl
#php #http #curl
Вопрос:
Я обработал некоторые данные HTTP-саботажа и пытаюсь создать свой собственный curl post, но, боюсь, я не могу понять, как это работает, кто-нибудь может объяснить, как мне это включить? основываясь на моих достоверных данных о несанкционированном доступе в Firefox, отправка данных на этом веб-сайте состоит из трех этапов, первый —
URL : http://www.thisiswebsite.xyz/Nginx/script/order_handler.php
Method POST
Type xmlhttprequest
itemname : IFHPB-P14
orderstep : 1
и после этого HTTP-заголовки, я думаю
URL : http://www.thisiswebsite.xyz/Nginx/script/order_handler.php
Method POST
Type xmlhttprequest
Host : www.thisiswebsite
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0
Accept : text/html, */*; q=0.01
Accept-Language : en-US,en;q=0.5
Accept - Encoding : gzip, deflate
Referer : http://www.thisiswebsite/Nginx/index.php
Content-Type : application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With : XMLHttpRequest
Content-Length : 30
Connection : keep-alive
Cookie : PHPSESSID=6gjfhn0475l26oanag1bugs025
и, наконец, данные отправки post
URL : http://www.thisiswebsite.xyz/Nginx/script/order_handler.php
Method POST
Type xmlhttprequest
itemname : IFHPB-P14
orderstep : 3
username : testing
hdsn : datatest
MAC : datatestmac
Моя попытка с curl
curl -X POST http://www.thisiswebsite.xyz/Nginx/script/order_handler.php
-H 'Host: www.thisiswebsite.xyz'
-H 'Connection: keep-alive'
-H 'Accept: text/html, */*; q=0.01'
-H 'Accept-Language: en-US,en;q=0.5'
-H 'Accept - Encoding: gzip, deflate'
-H 'Referer: http://www.thisiswebsite.xyz/Nginx/index.php'
-H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8'
-H 'X-Requested-With: XMLHttpRequest'
-H 'Content-Length: 30'
-H 'Cookie: PHPSESSID=6gjfhn0475l29oanagdbugs022'
-A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0'
--data "itemname=IFHPB-P4amp;orderstep=3amp;username=cahyaamp;hdsn=123amp;MAC=123"
Вопрос: как мне перенести эти 3 HTTP-данные в простой curl post?
Комментарии:
1. Какое это имеет отношение к PHP? Возможно, вам захочется отредактировать ваши теги…
2. @ivanivan потому что это будет записано с помощью php-скрипта, чтобы я мог запустить его как php test.php
3. Ах, так у вас есть рабочая командная строка
curl
, которую вы хотите преобразовать в PHP curl?4. @ivanivan Да, именно так, мой мужчина!
Ответ №1:
Создайте свои данные в виде ассоциативного массива, чтобы создать пары ключ / значение.
Создайте свои заголовки в виде массива.
Инициализируйте curl, установите необходимые параметры, выполните, захватите выходные данные, выключите curl, распечатайте результаты.
<?php
// build your data as an associative array for the keys
// and yes, you can use multi-dimensional arrays, etc
$data=array();
$data['item']="abc123";
$data['orderstep']=3;
$data['username']="joe.user";
$data['hsdn']=545;
$data['MAC']="bigmac";
// you can set options for various headers as needed, just
// do all of them as an array()
$headers=array();
$headers[]="Accept: text/html,*/*";
$headers[]="Referer: http://some.example.com";
$headers[]="Content-Type: application/x-www-form-urlencoded;charset=UTF-8";
// and so on...
// set the URL for your POST to go to
$url="http://api.example.com/end/point";
// now initialize curl
$ch=curl_init();
// set the options for your headers,
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
// and http method
curl_setopt($ch,CURLOPT_CUSTOMREQUEST,"POST");
// do you want to capture any returned output from server?
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
// what URL to call
curl_setopt($ch,CURLOPT_URL,$url);
// what data to send
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($data));
// make it so!
$curl_result=curl_exec($ch);
// done with curl
curl_close($ch);
// show results
print_r($curl_result."n");
?>
Комментарии:
1. как скрутить 2 данные в одном скрипте? я имею в виду, это другой пост, поэтому я должен сначала опубликовать этот, а затем другой
2. @CahyaDarmaWijaya просто, перед закрытием
curl
дескриптора просто установите / измените параметры по мере необходимости (URL и данные?), а затем повторно выполните.3. что, если я использую
$data1=array(); $data=array();
тот же$data
массив, который вы мне дали, но$data1
выполняемый первым после этого$data
4. пожалуйста, проверьте мой комментарий
5. @CahyaDarmaWijaya да, вы можете это сделать. поиграйте с этим.