Подскажите почему не работает данный код?
require "../db.php";
$urlApi = 'http://xx.xxx.xxx.x:xxxx/api';
$token = 'mytoken';
// Забираем пользователя и изменяем его id, чтобы нельзя было обратится за другого
$login = $_SESSION['logged_user']->login;
$var = R::findOne('users', 'WHERE `login`=?', [$login]);
$data = array();
$arOptions = [
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_HEADER => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'x-inclo-token:' . $token,
'Accept: application/json',
'Content-Type: application/json'
],
];
if (isset($_POST)){
foreach($_POST as $key => $value){ // Разбираем массив $_POST
if ($key == 'url_api'){
$urlApi = $urlApi . $value;
$arOptions['CURLOPT_URL'] = $urlApi;
}
if ($key == 'type'){
if ($value == 'post'){
$arOptions['CURLOPT_POST'] = true;
$MyFlag = 1;
}else if($value == 'get'){
$arOptions['CURLOPT_GET'] = true;
$MyFlag = 0;
}
}
$data[$key] = $value;
// $a[$key]=$value;
}
$data['id'] = $var->id;
}
if ($MyFlag == 1){
$arOptions['CURLOPT_POSTFIELDS'] = json_encode($data, JSON_UNESCAPED_UNICODE);
}
$ch = curl_init();
curl_setopt_array($ch, $arOptions);
// $res = curl_exec($ch);
// curl_close($ch);
// $res = json_encode($res, JSON_UNESCAPED_UNICODE);
// echo ($res);
Деббагинг, показал что ошибка в строке:
curl_setopt_array($ch, $arOptions);
Вызывая его вот так:
$.ajax({
url: "./Scripts/Interaction_Api.php",
type: 'POST',
data: 'dataString',
datatype: 'json',
data: {
type: 'post',
url_api: '/set',
setname: array[0],
clo: array[1],
geo: ['ru'],
trafficsource: array[3],
paranoia: true,
streamlink: array[5],
},success: function(data) {
alert(data);
}
});
Ответы (1 шт):
Автор решения: artemgh
→ Ссылка
Нашёл ошибку, ошибка в том, что я неправильно добавляю элементы к $arOptions, в итоге я полностью решил отказаться от этого и просто напрямую задаю что-то к CUrl запросу, итоговый рабочий код:
<?php
require "../db.php";
$urlApi = 'http://my_ip/api';
$token = 'mytoken';
// Забираем пользователя и изменяем его id, чтобы нельзя было обратится за другого
$login = $_SESSION['logged_user']->login;
$var = R::findOne('users', 'WHERE `login`=?', [$login]);
$ch = curl_init();
$data = array();
$arOptions = [
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_HEADER => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'x-inclo-token:' . $token,
'Accept: application/json',
'Content-Type: application/json'
],
];
if (isset($_POST)){
foreach($_POST as $key => $value){ // Разбираем массив $_POST
if ($key == 'url_api'){
$urlApi = $urlApi . $value;
curl_setopt($ch, CURLOPT_URL, $urlApi);
}
if ($key == 'type'){
if ($value == 'post'){
curl_setopt($ch, CURLOPT_POST, true);
$MyFlag = 1;
}else if($value == 'get'){
curl_setopt($ch, CURLOPT_GET, true);
$MyFlag = 0;
}
}
$data[$key] = $value;
// $a[$key]=$value;
}
$data['id'] = $var->id;
}
if ($MyFlag == 1){
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data, JSON_UNESCAPED_UNICODE));
}
curl_setopt_array($ch, $arOptions);
$res = curl_exec($ch);
curl_close($ch);
$res = json_encode($res, JSON_UNESCAPED_UNICODE);
echo ($res);
?>
Был бы очень благодарен, за Ваши идеи по оптимизации кода