file_get_contents выдает предупреждение

    $url="http://www.smszone.in/sendsms.asp?page=".$page."&username=".$usrnm."&password=".$passw."&number=".$mobile."&message="."Hi ".$admi.' '.implode($msg)."  Is issued ..."."\n"."Regards";
    $homepage = file_get_contents($url);
    if($homepage)
    {
      echo "Message Send Compleated...";
    }
    else{
      echo "Something Went Wrong...";

Предупреждение: file_get_contents(http://www.smszone.in/sendsms.asp?page=SendSmsBulk&username=******&password=****&number=************&message=Привет, Изза AMGR-8A:3/1-BCS-GR:2/ 1-CCL Выдается... С уважением): не удалось открыть поток: Ошибка HTTP-запроса! HTTP/1.1 400 Неверный запрос в F:\xampp\htdocs\loglib\logissue.php в строке 40 Что-то пошло не так...

Это ошибка, которую я получаю, когда запускаю ее через свой php-код. Если я скопирую сгенерированный URL-адрес и вставлю в любой браузер, он сработает....

Примечание. Я использую xampp


person user3521051    schedule 06.05.2018    source источник
comment
Вы пробовали file_get_contents(urlencode($url));?   -  person Paul    schedule 06.05.2018
comment
... или, по крайней мере, URL-адрес кодирует все значения (в частности, сообщение). Браузер выполняет кодировку URL-адресов автоматически, PHP - нет, поэтому вам нужно сделать это вручную.   -  person Magnus Eriksson    schedule 06.05.2018
comment
'file_get_contents (urlencode ($ URL));' не работает   -  person user3521051    schedule 06.05.2018
comment
Не кодируйте все подряд. Закодируйте значения переменных.   -  person chris85    schedule 06.05.2018
comment
Да, это была плохая идея, недостаточно подумал. Попробуйте закодировать значения и особенно сообщение, содержащее пробелы (как предложил @MagnusEriksson).   -  person Paul    schedule 06.05.2018


Ответы (1)


Вы можете использовать функцию https://secure.php.net/manual/en/function.http-build-query.php для построения правильной строки запроса. :

$query = [
  'page' => $page,
  'username' => $user,
  // ... 
];

$url = 'http://...?'.http_build_query($query);
person vp_arth    schedule 06.05.2018