trak_ivan
@trak_ivan

Когда в GET запросе передается параметр из русских символов, то скрипт не отрабатывает. В чем причина?

Из 1С идет GET запрос. Один из параметров - название файла. И он иногда называется русскими символами.
https://мойсервер/telegrambot/file.php?apibot=24953021_______Pnjwywdkg&chatid=-1003333102111&document=Продажи_месяц_май.xls

К примеру в таком виде. И тогда файл в не отправляется. Если в названии будет просто цифры: 2018.xls, то все отлично отрабатывает и отправляется. Перепробовал разные вещи. В чем проблема?
Ниже код:
header('Content-Type: text/html; charset= utf-8');
	$botToken = $_GET['apibot'];
	$website="https://api.telegram.org/bot".$botToken;
	$chatId = $_GET['chatid']; //Receiver Chat Id
	$caption = $_GET['caption'];
	$file_send = "./file_temp/".$_GET['document']; 
	$file_s = iconv("windows-1251","UTF-8",$file_send);
	$file_name_with_full_path = realpath($file_s);

	
    $params=array(
    'chat_id'=>$chatId,
    'document'     => '@'.$file_name_with_full_path,
    'caption'   => $caption,
    );
	$proxy_port = "1080";
	$proxy_ip = "___.me";
	$loginpassw = '126____1ba';
	$ch = curl_init($website . '/senddocument');
	curl_setopt($ch, CURLOPT_HEADER, false);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_POST, 1);
	
	curl_setopt($ch, CURLOPT_PROXYPORT, $proxy_port);
    curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
    curl_setopt($ch, CURLOPT_PROXY, $proxy_ip);
    curl_setopt($ch, CURLOPT_PROXYUSERPWD, $loginpassw);
	
	curl_setopt($ch, CURLOPT_POSTFIELDS, ($params));
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);	
	$result = curl_exec($ch);
	curl_close($ch);
  • Вопрос задан
  • 664 просмотра
Пригласить эксперта
Ответы на вопрос 2
RomaZveR
@RomaZveR
CEO AlertMoney, PHP/Golang Developer
1) Думаю эта строчка лишняя
$file_s = iconv("windows-1251","UTF-8",$file_send);

2) Строкой выше лучше обернуть
$file_send = './file_temp/'.basename($_GET['document']);
Ответ написан
DieZz
@DieZz
Проблема в том, что данный урл невалидный (
RFC 1738
), т.е. содержит русские символы. В вашем случае ссылка должны выглядеть примерно так
https://мойсервер/telegrambot/file.php?apibot=24953021_______Pnjwywdkg&chatid=-1003333102111&document=%D0%9F%D1%80%D0%BE%D0%B4%D0%B0%D0%B6%D0%B8_%D0%BC%D0%B5%D1%81%D1%8F%D1%86_%D0%BC%D0%B0%D0%B9.xls

Беглый поиск по гуглу говорит что в 1С есть функция КодироватьСтроку()
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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