PDA

View Full Version : سوال: مشکل در قرار دادن متغیر در CURLOPT_POSTFIELDS



niksalehi
جمعه 03 تیر 1401, 12:24 عصر
سلام، وقت شما به خیر باشه دوستان
من برای ارسال درخواست به یک آدرس https ، از فانکشن زیر استفاده میکنم


function file_get_contents_ssl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, $url);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,'{"json_schema":{"category":{"value":"TEST"},"type":{"value":"private"}},"postingdate":1655879832822168}');

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Host: example.ir',
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0',
'Content-Type: application/json',
'Content-Length: 124',
'Referer: https://example.ir/',
'Connection: keep-alive'
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3000);
curl_setopt($ch, CURLOPT_TIMEOUT, 10000);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}



برای فراخوانیش هم از این کد



$html = file_get_contents_ssl("https://example.ir/test/");
echo $html;


مشکلی که دارم اینه وقتی یک مقداری رو از طریق $_GET دریافت میکنم ، و به جای قسمت 1655879832822168 در قسمت زیر جایگذاری میکنم و درخواستم رو ارسال میکنم، پاسخی از سایت دریافت نمیکنم، اما وقتی به صورت مستقیم و بدون جایگذاری متغیر در قسمت زیر درخواست رو ارسال میکنم، پاسخ رو کامل دریافت میکنم.


curl_setopt($ch, CURLOPT_POSTFIELDS,'{"json_schema":{"category":{"value":"TEST"},"type":{"value":"private"}},"postingdate":1655879832822168}');

مشکل از کجاست؟
چطوری باید متغیری رو دریافت کرد و در CURLOPT_POSTFIELDS جایگذاری کرد که مشکلی پیش نیاد؟

ممنونم

plague
جمعه 03 تیر 1401, 14:46 عصر
سلام
خوب باید اون کدت که مشکل داره رو بزاری تا مشکل معلوم بشه شما کد سالم رو گزاشتید
همچنین باید دید چه ارروری میگیرید و متن اررورتون چیه که قید نکردین
ولی خوب اگه کدت دقیقا همینه که تابع مقادیر بیرونش رو نمیبینه (ازجمله GET ) و باید وقتی صداش میزنی اون رو بهش پاس بدی




function file_get_contents_ssl($url , $postDate ) {

curl_setopt($ch, CURLOPT_POSTFIELDS,'{"json_schema":{"category":{"v alue":"TEST"},"type":{"value":"private"}},"posting date":'.$postDate.'}');


}

file_get_contents_ssl('https://example.com' , $_GET['postDate'] );