Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JSON модуль непонятные символы (https://javascript.ru/forum/misc/56060-json-modul-neponyatnye-simvoly.html)

papam79 27.05.2015 21:05

JSON модуль непонятные символы
 
Добрый день!
Установили JSON модуль поиска тура http://json.tez-tour.com/
С модуля тез тур принимаю некий параметр, который передает ссылку на тур.
Принимаю GET. Cсылку получаю, только в ней непонятные символы(подмена), я выделил жирным.
Подскажите пожалуйста в чем дело.
В

http://online.tez-tour.com/armmanage......ru&ftt=3635<t=3635&sk=1&rar=1285&rdr=1285&cResId=10471545869&pr iceOfferId=11832169&cFlyIds=10086062

papam79 27.05.2015 22:56

Получаю так:
$_GET['booklink'] ; print $_GET['booklink'];

laimas 27.05.2015 23:02

echo rawurldecode($_GET['booklink'])

papam79 27.05.2015 23:09

Все по старому(

papam79 27.05.2015 23:17

Ссылка такой вид должна иметь:
http://online.tez-tour.com/armmanage...&captcha=false

papam79 27.05.2015 23:17

http://online.tez-tour.com/armmanager/workplace/section/new-order?depCity=345&arrivalCity=345&hotStType=2&locale=ru&ftt=3635&ltt=3635&sk=1&rar=1285&rdr=1285&cResId=10471549769&priceOfferId=11832175&cFlyIds=10086062&captcha=false

laimas 27.05.2015 23:31

Так не получится, что там по старому, что по новому....
Нужно видеть как есть. Если есть что-то битое, что может быть в итоге кодировано, то rawurldecode позволит увидеть что.

То есть, покажите параметр один в один, без ссылки, убрав протокол, иначе повтор обычный виден: ....ru&ftt=3635<t=3635

papam79 27.05.2015 23:35

сейчас
online.tez-tour.com/armmanager/workplace/section/new-order?depCity=345&arrivalCity=345&hotStType=2&loca le=ru&ftt=3635<t=3635&sk=1&rar=1285&rdr=1285&cResI d=10471549772&priceOfferId=11832175&cFlyIds=100861 43

laimas 27.05.2015 23:46

Ясно. Еще раз тогда:
В URL символы такие как ? и &, это специальные, и нельзя в GET параметр подставить строку содержащую url с параметрами как есть, ее кодируют перед этим, и такого параметра как: online.tez-tour.com/armmanager/workplace/section/new-order?depCity=345&arrivalCity в ней будет, а будет такое:
http%3A%2F%2Fonline.tez-tour.com%2Farmmanager%2Fworkplace%2Fsection%2Fnew-order%3FdepCity%3D345%26arrivalCity...

Вот это < видим "в лоб" потому, что &lt, это html мнемоника этой угловой скобки. А далее видно вторую t и т.д...

papam79 28.05.2015 06:42

laimas,
А как кодировать?

papam79 28.05.2015 07:31

laimas,
Спасибо большое, разобрался

laimas 28.05.2015 08:16

Кодирует сторона передающая такой параметр, а сервер ее принявший декодирует.
Вы поступаете в лоб, выводя на экран вот так print $_GET['booklink'], поэтому и видите то, что и должны увидеть - html мнемонику, которая получается из-за сочетания разделителя параметра и следующих за ним символов. Ну обозвали бы параметр не "ltt", а "copy" и получилось бы сочетание &copy, и видели бы вы не <, а ©.

Вы ее получаете зачем - посмотреть на нее или использовать? Если посмотреть, то:
//если то, что как пришло, то кодируем уже у себя
echo rawurlencode($_GET['booklink']);
//если то, что получил сервер принимающий
echo htmlspecialchars($_GET['booklink']);

Если использовать то вставлять этот полученный параметр куда надо:
<a href="<?=$_GET['booklink']?>">tez-tour.com</a>

В чем проблема?

laimas 28.05.2015 08:18

Слава богу, а то я начал писать ответ, да на кофе отвлекся, потом сигаретой затянуться.... и слишком долго затягивался. :)

kostyanet 28.05.2015 11:04

урл из параметра отгружается в урл без всяких преобразований, а если его надо распарсить, то подаете значение параметра на вход функции parse_str() - http://php.net/manual/ru/function.parse-str.php и юзаете все что в ней навалено.


Часовой пояс GMT +3, время: 06:05.