powered by simpleCommunicator - 2.0.28     © 2024 Programmizd 02
Map
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / спец. символ в параметре get и file_get_contents
26 сообщений из 26, показаны все 2 страниц
спец. символ в параметре get и file_get_contents
    #40107939
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скажем вот делаю :

$url = site.com/test.php?param=part1/part2
$text = file_get_contents($url);
понятное дело, что слеш в параметре воспринимается неадекватно, так как спецсимвол, но ничего не поделаешь его надо как-то передавать.
на site.com я повлиять не могу.

urldecode/urlencode с ними тоже не выходит.

Что-нибудь можно сделать ?
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40107949
estic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40107950
estic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если в написанном мной что-то не понятно, можете явно вписать %2F. Но если начинать писать адрес с site.com или test.php, все равно работать не будет ;)
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40107956
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estic,

я явно писал через процент слеш вот таким образом :
вот так :
Код: php
1.
2.
$url = 'site.com/test.php?param=part1%2Fpart2';
$text = file_get_contents($url);




так же делал при помощи urldecode для параметра (не для всего урл , а именно только для параметра) вот так :
Код: php
1.
file_get_contents('test.php?param='.urlencode('part1/part2'))



Сервак test.php не воспринимает подобное когда я делаю при помощи в вышеописанных вариантах при помощи file_get_contents.
Однако, если я вобъю в браузер вот таким образом :
site.com/test.php?param=part1%2Fpart2

всё отработает корректно.
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40107997
estic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уже и прямо вам писал, и намекал, что нужно указывать полный адрес, включая протокол. В четвертый раз повторять не буду.
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108157
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если забэкслэшить?
\/ вот так?
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108256
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estic
Уже и прямо вам писал, и намекал, что нужно указывать полный адрес, включая протокол. В четвертый раз повторять не буду.

так я со всем фаршем делаю и делаю изначально, а то что в примере просто отбросил:

https://geocult.ru/lunnyiy-kalendar-2?d1=10&m1=6&y1=1981&h1=20&mi=4&tz1=1&tz2=Europe/Berlin&lg=13.4105<=52.5243&cit=Берлин&cn=DE&st=16&ci=2950159&sb=1
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108281
estic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
edit get.php
Код: php
1.
2.
3.
4.
5.
<?php

$text = file_get_contents('показанный адрес');

echo $text!==false ? strlen($text) : 'Error!';



php get.php
Код: powershell
1.
129373
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108282
estic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может, ваш IP не нравится. Или еще что-нибудь в таком духе.

Дополнительные заголовки, как я показал, не требуются.
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108283
estic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"Берлин" закодировали?
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108315
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,

сделал вот такой скрипт:
Код: php
1.
2.
3.
4.
5.
6.
7.
<?php
  $url = 'https://geocult.ru/lunnyiy-kalendar-2?d1=10&m1=6&y1=1981&h1=20&mi=4&tz1=1&tz2=Europe/Berlin&lg=13.4105<=52.5243&cit=Берлин&cn=DE&st=16&ci=2950159&sb=1';
  $s = file_get_contents($url);
  print $s;
  file_put_contents('d:\projects\php\rslt.htm', $s);

?>


Последняя строчка - для проверки на всякий случай, т.к. текст ответа большой, начало в консоли обрезАлось.
Запустил файл из командной строки под Windows
Код: powershell
1.
php d:\projects\php\getf.php


Всё сработало. А вот когда писал
Код: php
1.
  $s = file_get_contents(urlencode($url));


то выходило сообщение, что не может найти такой файл.
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108404
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estic
"Берлин" закодировали?


"берлин" я кодировал urldecode и "Europe/Berlin" тоже. а так же просто прописывал уже готовый урл заменив все слова символами %
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108405
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estic
Может, ваш IP не нравится. Или еще что-нибудь в таком духе.

Дополнительные заголовки, как я показал, не требуются.


так ответ то даёт.
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108408
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62
andron81,

сделал вот такой скрипт:
Код: php
1.
2.
3.
4.
5.
6.
7.
<?php
  $url = 'https://geocult.ru/lunnyiy-kalendar-2?d1=10&m1=6&y1=1981&h1=20&mi=4&tz1=1&tz2=Europe/Berlin&lg=13.4105<=52.5243&cit=Берлин&cn=DE&st=16&ci=2950159&sb=1';
  $s = file_get_contents($url);
  print $s;
  file_put_contents('d:\projects\php\rslt.htm', $s);

?>


Последняя строчка - для проверки на всякий случай, т.к. текст ответа большой, начало в консоли обрезАлось.
Запустил файл из командной строки под Windows
Код: powershell
1.
php d:\projects\php\getf.php




Всё сработало. А вот когда писал
Код: php
1.
  $s = file_get_contents(urlencode($url));


то выходило сообщение, что не может найти такой файл.


Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
$params = [
        'd1' => 10,
        'm1' => 6,
        'y1' => 1981,
        'h1' => 20,
        'mi' => 4,
        'tz1' => 1,
        'tz2' => "Europe/Berlin",
        'lg' => 11.5754,
        'lt' => 48.1374,
        'cit' => "Мюнхен",
        'cn' => "DE",
        'st' => 02,
        'ci' => 2867714,
        'sb' => 1
    ];
    
$ctx = [
    "ssl" => [
        "verify_peer"=>false,
        "verify_peer_name"=>false,
    ]
];

$url = "https://geocult.ru/lunnyiy-kalendar-2?" . http_build_query($params);
$data = file_get_contents($url, null, stream_context_create($ctx));
echo($data);



вот так работает. в общем-то мои задачи решает. Но не без греха: поля страна , область, город не заполнены. а это скорее всего из-за того, что в параметре tz2 слеш тем сервером не был понят
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108422
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,
знаете, скопировал из браузера (FF) адресную строку к странице, в которой задал сегодняшнюю дату и моё место (Жуковский). Строка выглядит вот так:
"https://geocult.ru/lunnyiy-kalendar-2?d1=31&m1=10&y1=2021&h1=15&mi=24&tz1=3&tz2=Europe%2FMoscow&lg=38.1202<=55.5952&cit=%D0%96%D1%83%D0%BA%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D0%B9&cn=RU&st=47&ci=462755&sb=1"
Чтобы сравнить с вашим вариантом, вот выбрал Берлин, браузер так это перекодировал:
"https://geocult.ru/lunnyiy-kalendar-2?d1=31&m1=10&y1=2021&h1=15&mi=24&tz1=1&tz2=Europe%2FBerlin&lg=13.4105<=52.5243&cit=%D0%91%D0%B5%D1%80%D0%BB%D0%B8%D0%BD&cn=DE&st=16&ci=2950159&sb=1"
Вызвал скрипт с первым URL и, сравнивая сохраненный скриптом файл (там все ссылки указаны с абс. путями, так что страница открылась практически как в браузере, только в выпадающих списках не сделан выбор), вижу, что всё пришло, как нужно, похоже - дата и место соответствуют.
Может вам попытаться привести URL к виду, как браузер делает (я так понимаю, что он делает как раз url-кодирование) ?

p.s. Или " Но не без греха: поля страна , область, город не заполнены." - это то же самое у меня в выпадающих списках, а результат тоже рассчитан к месту и времени?
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108427
estic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
s62
А вот когда писал
Код: php
1.
  $s = file_get_contents(urlencode($url));


то выходило сообщение, что не может найти такой файл.
Так нельзя делать. Функция предназначена для кодирования отдельных частей адреса. Сделайте echo urlencode($url) и все поймете.
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108428
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62

Может вам попытаться привести URL к виду, как браузер делает (я так понимаю, что он делает как раз url-кодирование) ?



не хочется. он считает вроде бы верно. а что не заполняет поля - пёс с ним.
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108430
estic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andron81
Но не без греха: поля страна , область, город не заполнены. а это скорее всего из-за того, что в параметре tz2 слеш тем сервером не был понят
Со слэшем не должно быть проблем. А вот написанное в предыдущем сообщении имеет место. В адресе ссылки, показанной вами на форуме, использована однобайтовая кодировка (в URL-коде "Берлин" представлено 6 байт, а не 12). Запрашиваемая страница, имея кодировку UTF-8, сохраняет в себе название города в однобайтовой кодировке (видимо, берет его прямо из адреса).

Т.е. вам нужно использовать в адресе запроса UTF-8 (в URL-кодировке).
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108432
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не знаю проблема со слешем или нет, но проблема есть.

что касаемо этого, то в моем исходнике вообще просто вбито на русском и всё работает адекватно:
estic

Т.е. вам нужно использовать в адресе запроса UTF-8 (в URL-кодировке).





Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
$params = [
        'd1' => 10,
        'm1' => 6,
        'y1' => 1981,
        'h1' => 20,
        'mi' => 4,
        'tz1' => 1,
        'tz2' => "Europe/Berlin",
        'lg' => 11.5754,
        'lt' => 48.1374,
        'cit' => "Мюнхен",
        'cn' => "DE",
        'st' => 02,
        'ci' => 2867714,
        'sb' => 1
    ];
    
$ctx = [
    "ssl" => [
        "verify_peer"=>false,
        "verify_peer_name"=>false,
    ]
];

$url = "https://geocult.ru/lunnyiy-kalendar-2?" . http_build_query($params);
$data = file_get_contents($url, null, stream_context_create($ctx));
echo($data);
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108435
estic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andron81
но проблема есть.
В браузере эти поля, кажется, только после загрузки корректируются (по крайней мере при переходе по ссылке).

andron81
что касаемо этого, то в моем исходнике вообще просто вбито на русском и всё работает адекватно
Ну, если исходник в UTF-8, то будет адекватно. Наверное, это форум такой адрес сформировал. Он в ANSI-кодировке :D
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108439
estic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да там в адресе и параметр lt изуродован.
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108445
estic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
estic
В браузере эти поля, кажется, только после загрузки корректируются (по крайней мере при переходе по ссылке).
Да, в тексте страницы по запросу только список стран (без выбранной страны). А областей и городов в списках вообще нет, что логично.
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108476
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estic,

ладно. спасибо за участие. задача решена .
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108481
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estic
estic
В браузере эти поля, кажется, только после загрузки корректируются (по крайней мере при переходе по ссылке).
Да, в тексте страницы по запросу только список стран (без выбранной страны). А областей и городов в списках вообще нет, что логично.


наверно js-скрипт делает . ajax наверняка там есть. хотя и не изучал этот вопрос. не очень надо .
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108487
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estic
s62
А вот когда писал
Код: php
1.
  $s = file_get_contents(urlencode($url));



то выходило сообщение, что не может найти такой файл.
Так нельзя делать. Функция предназначена для кодирования отдельных частей адреса. Сделайте echo urlencode($url) и все поймете.
Да, я уже посмотрел.
...
Рейтинг: 0 / 0
спец. символ в параметре get и file_get_contents
    #40108558
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
estic
s62
А вот когда писал
Код: php
1.
  $s = file_get_contents(urlencode($url));



то выходило сообщение, что не может найти такой файл.
Так нельзя делать. Функция предназначена для кодирования отдельных частей адреса. Сделайте echo urlencode($url) и все поймете.
Уже посмотрел, посмотрел и описание функции, да, она всё преобразует и ломается например часть URI, соответствующая протоколу.
Не так давно пользовался в Delphi функцией TIdURI.URLEncode(), а она по-другому устроена: в функции URL разбирается на части и преобразуется по частям, так что можно в качестве аргумента просто весь путь передавать. Ну я и тут по аналогии использовал.
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / спец. символ в параметре get и file_get_contents
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]