Intereting Posts
Yii2: Как добавить два поля в orderby () из Find () Это лучший формат CSV-файла для импорта в базу данных MySQL PHP, как лучше всего редактировать файл RTF Использовать PHP для определения того, какой пользователь htaccess подписал? Радио-кнопка показывает курсор между двумя переключателями, используя jquery Какой самый безопасный способ обнаружения языка браузера и перенаправление 301 на домашнюю страницу Обновите содержимое mysql div с помощью ajax Как я могу использовать локальное хранилище HTML5 вдоль стороннего PHP, использовать его для сеансов php и хранить другую информацию, которую использует php PHP: как я могу сортировать и фильтровать «массив», то есть объект, реализующий ArrayAccess? Вставить «элемент» среди других «элементов» массива (loop) php Почему я должен использовать $ _GET и $ _POST вместо $ _REQUEST? Не удается получить страницу входа для перенаправления на защищенную страницу PHP: выдать всплывающее предупреждение, а затем перенаправить страницу Найдите массив и верните все ключи и значения, если найдено совпадение Лучший способ избежать строк для вставок sql?

Как передать URL с параметром в качестве параметра?

Я пытаюсь передать URL как параметр, но этот URL также имеет параметры. Конечно, эти параметры важны и должны быть переданы и правильно интерпретированы.

Например: http://example.com/myclicktrackingscript.php?source=sidebar&url=http://example.com/redirect_to.php?site=site1

(да, я знаю, я мог щелкнуть трек и перенаправить все сразу в один файл, но в некоторых конкретных ситуациях я просто не могу: иногда мне нужно передать любой URL с параметрами AS-параметр)

До сих пор я использовал переписывание URL: http://example.com/redirect_to.php?site=site1 => http://example.com/redirect/site1/

.. но это не очень удобно (слишком много конкретных ситуаций, когда мне нужно больше гибкости)

Есть ли лучший способ сделать это?

Мое предположение, возможно, связано с URL-адресом параметра:

Например: http://example.com/myclicktrackingscript.php?source=sidebar $ url = REJREJ12333232rerereE

… но как правильно «дешить» его?

Я никогда не использовал такую ​​технику, есть ли какие-либо примеры / советы / советы о том, как это сделать?

благодаря

Вы должны просто кодировать параметр:

urlencode('http://example.com/redirect_to.php?site=site1') 

И закодированное значение будет: http%3A%2F%2Fexample.com%2Fredirect_to.php%3Fsite%3Dsite1

вы можете использовать urlencode

  $parmeter_url = "http://example.com/redirect_to.php?site=site1"; $parmeter_url = urlencode($parmeter_url); $url = "http://example.com/myclicktrackingscript.php?source=sidebar&url=".$parmeter_url; echo $url; 

см. Демо

Хотя urlencode будет работать, это также приводит к беспорядочному (смотри, IMOHO) выводу для этой задачи по умолчанию. Однако его можно очистить!

Это связано с тем, что в строке запроса допускаются некоторые «специальные символы» , поэтому мы можем исправить перекодировку, чтобы она выглядела красивее.

 $encoded = urlencode('http://target.com/foo_bar.php?a=1&b=2'); // Remove unneeded encoding $encoded = str_replace('%3A', ':', $encoded); $encoded = str_replace('%2F', '/', $encoded); $encoded = str_replace('%3F', '?', $encoded); $encoded = str_replace('%3D', '=', $encoded); // There are several additional characters that need not be encoded in // the query string; refer to the link. 

Это работает, когда $ encoded используется в части запроса URI.

 $url = "http://blah/?url=$encoded"; 

И должен привести к довольно читаемому URL-адресу, как показано ниже. Обратите внимание, что & во внедренном URL-адресе все еще закодировано, так как оно обозначает завершение между парами значений.

 http://blah/?url=http://target.com/foo_bar.php?a=1%26b=2 

В тех случаях, когда человеческая читаемость нежелательна, существуют также такие подходы, как base64-кодирование URL-адреса (который все равно должен быть сделан с URI-безопасностью ) или с использованием бэкэнд для предоставления услуги URL-shortener (что позволит « http: // blah. com /? afjnD ").

Однако хеширование само по себе не будет работать, потому что (если отображение не сохраняется) хеш-функция является односторонней, а исходные данные не восстанавливаются.