У меня есть веб-сайт, который использует facebook, twitter, delicious share links. Они содержат URL-адрес, кодированный url сайта, который вы хотите поделиться. Проблема в том, что я хочу отправить facebook / twitter / delicious url через страницу перенаправления php.
Будет ли он работать для кодирования URL-адреса в кодированном URL-адресе? Будут ли побочные эффекты?
Чтобы упростить мой вопрос:
www.website.com/redirect.php?url=" URLENCODED (http://www.facbook.com/sharer.php?t='URLENCODED(title)'&u='URLENCODED(http://www.hotel.com)')
Вы можете кодировать строку несколько раз с процентной кодировкой и получать исходное значение, декодируя ее столько же раз:
$str = implode(range("\x00", "\xFF")); var_dump($str === urldecode(urldecode(urldecode(urlencode(urlencode(urlencode($str)))))));
Здесь значение $str
кодируется три раза, а затем декодируется три раза. Результат этого повторного кодирования и декодирования идентичен значению $str
.
Поэтому попробуйте следующее:
'http://example.com/redirect.php?url='.urlencode('http://www.facbook.com/sharer.php?t='.urlencode('title').'&u='.urlencode('http://www.hotel.com'))
Вы должны иметь возможность рекурсивно кодировать URL столько раз, сколько хотите. Если вы кодируете символ типа / повторно, вы получите:
0: / 1: %3F 2: %%3F 3: %%%%3F
и т.п.
Можно добавить второй слой URLEncoding. Идея URLEncoding заключается в том, чтобы помешать серверу неправильно интерпретировать любые специальные символы, которые могут присутствовать в текстовой строке. Тем не менее, сценарий приема должен ожидать дополнительный уровень urlencode () и действовать соответственно.
Или, если вы знаете, что строка была указана на urlencoded, вы не могли бы просто передать ее как есть? Никакого дальнейшего urlencoding не требуется.
Или просто urldecode заголовок и URL, а затем urlencode всю строку.
Как уже упоминалось ранее, вы можете кодировать URL-адреса столько, сколько хотите, но вы должны знать, сколько раз вы кодируете данные url, тем больше он увеличится по длине, может быть два раза в два раза. который будет раздражать пользователей, если он слишком длинный. также может быть ограничение на длину URL в некоторых браузерах. Также на стороне сервера будет накладное кодирование и декодирование данных. Короче говоря, вы действительно должны быть уверены, что вам нужно это до кодирования / декодирования несколько раз.