MaxxxNSK
@MaxxxNSK
очень начинающий

В чем разница и почему не проходит второй вариант?

Есть два кода, смысл один, но работает по разному:
1:
$data = array(
		"text" => $text,
		"chat_id" => $chat_id
);
$url = BASE_URL . 'sendMessage?chat_id=' . $data['chat_id'] . '&text=' . $data['text'];
file_get_contents($url, False, $cxContext);

2:
$data = array(
		"text" => $text,
		"chat_id" => $chat_id
);
foreach($data as $k => $v)
	{
		$data .= '&' . $k . '=' . $v;
	}

$url= BASE_URL  . 'sendMessage?' . $data;
file_get_contents($url, False, $cxContext);
}
?>


Первый работает и отправляет, второй не работает и выдаёт
PHP Warning: file_get_contents(): SSL: Handshake timed out
PHP Warning: file_get_contents(): Failed to enable crypto
failed to open stream: operation failed

Что не так?
  • Вопрос задан
  • 481 просмотр
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Что не так?
В- внимательность
//тут все ок
$url = BASE_URL . 'sendMessage?chat_id=' . $data['chat_id'] . '&text=' . $data['text'];

// а тут вместо переменной урл идет дата, а урл вообще не определен
$data = BASE_URL  . 'sendMessage?' . $data;


//UPD: не заметил шедевральное )

$data = array("text" => $text, "chat_id" => $chat_id);
foreach($data as $k => $v)
  {
//тут к итерируемому массиву конкатенируем строку, 
//подход интересный, но работать не будет )
    $data .= '&' . $k . '=' . $v;
  }

// все эти танцы спокойно заменяются на 
$data = array("text" => $text, "chat_id" => $chat_id);
$url = BASE_URL . 'sendMessage?' . http_build_query($data);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы