Премиум URL-адрес, проблема с заменой URL-адреса & amp; знак с амперсандом

Как начинающий php ученик, я использую Code-Canyon Премиум URL Shortner Сценарий и сделано 2 дня исследований. К сожалению, я не могу решить мою проблему.

Сценарий сокращения URL-адреса urlencoding URL-адреса API, который он отправляет в сценарий, при этом он заменяет & символы с & в результате чего URL-адрес не работает правильно на конечной странице назначения.

Я пытался использовать preg_replace, str_replace а также пытался использовать urldecode на странице назначения, но ни один из них, кажется, не работает. Вот мой текущий сценарий:

$makeshort = "http://mywebsite.com/email/quote.php?quoteid=$visitor&customertype=fhbs";
$mkshrt = str_replace("/&/","%26",$makeshort);
$short = "http://shorturl.com/api?&api=REMOVED&format=text&url=".urlencode($mkshrt);

// Using Plain Text Response
$api_url = $short;
$res= @file_get_contents($api_url);
if($res)
$shorturl = $res;
$shorty = json_decode($shorturl);
$shorturl = $shorty->{'short'};
echo $shorturl;

Примечание: где вы видите &format=text в API-адресе я пытался использовать его с и без &format=text однако это не имеет значения, что так всегда.

Я надеюсь, что мог бы быть простой и быстрый способ решить эту проблему, так как я передаю только две переменные, а вторая переменная отображается так:

mywebsite.com/email/quote.php?quoteid=01234567890&customertype=fhbs

Таким образом, переменная customertype испорчена из-за amp; условное обозначение.

Я искренне надеюсь, что кто-то со знанием дела мог бы посоветовать мне лучший подход или даже простой способ решить эту проблему, поскольку я действительно нахожусь в моем конце! Мои знания недостаточно хороши, чтобы исследовать точные ключевые фразы, чтобы указывать правильное направление.

Спасибо, что уделили мне время на прочтение этого, и я надеюсь, что кто-то будет любезен помочь мне здесь

2

Решение

Я знаю это чувство, потому что я сам только начинаю понимать кодирование и разработку.

Я лично решил бы это одним из двух способов. Если вы уже пытались использовать htmlspecialchars или htmlentities вместе с urldecode, то самый простой и быстрый способ добиться этого — прочитать строку URL, а затем заменить строку &символ с & используя str_replace и выполняйте либо мета-обновление страницы, либо `перенаправление расположения заголовка

Вот что я имею в виду в качестве краткого примера, однако следует подчеркнуть, что может потребоваться дополнительная безопасность, и это ТОЛЬКО быстрое исправление, а не надежное стабильное и постоянное исправление, хотя с этим можно поиграть и, возможно, что-то сработать для ваших собственных обстоятельств.

$url = "http://". $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if(strstr($url, "&")){
$url = "http://". $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
$url = str_replace('&', '&', $url);
echo "<meta http-equiv='refresh' content='0;URL=$url'>";
exit;
}

Альтернативный способ с расположением заголовка:

$url = "http://". $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if(strstr($url, "&amp;")){
$url = "http://". $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
$url = str_replace('&amp;', '&', $url);
header("Location: $url");
exit();
}

Это полностью удалит любые &amp; символы из URL и замените их на &,
Вы также можете поиграть с этим, чтобы удалить еще больше из строки URL и заменить такие вещи, как / или запрещенные слова.

Пример вывода будет выглядеть так:

Оригинальный URL, вызывающий проблемы:

http://mywebsite.com/email/quote.php?quoteid=1234567890&amp;CustomerType = fhbs

Новый URL после того, как скрипт выполнил и обновил страницу:

http://mywebsite.com/email/quote.php?quoteid=1234567890&CustomerType = fhbs

Как видно из приведенного выше текста с гиперссылкой, амперсанд разрывает строку, и все, что после этого читается неправильно, но когда этот скрипт выполняется и обновляет страницу, URL будет похож на вторую гиперссылку, таким образом, заставляя работать URL для того, что вам нужно ,

ПРИМЕЧАНИЕ: ЭТО НЕ БЕЗОПАСНЫЙ СПОСОБ ДЕЙСТВИЯ И НЕ МОЖЕТ БЫТЬ ИДЕАЛЬНЫМ ДЛЯ ВАШИХ ОБСТОЯТЕЛЬСТВ, ЭТО ПРОСТО ИДЕЯ И НАДЕЖДА ЭТО ПОМОГАЕТ!

Благодарю.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]