Переменные PHP не передаются на URL правильно из API

Я пытаюсь использовать сценарий Premium URL Shortener из codecanyon, я обратился за поддержкой, но они немного заняты, поэтому время отклика не слишком быстрое.

У меня возникает проблема, когда API отправляет запрос в скрипт сокращения URL со следующим сокращенным запросом для примера:

$short = "http://myurl/api?api=MYAPI&format=text&url=http://myfullwebsite.com/email/quote.php?fullname=$fullname&address=$address&emailaddress=$emailaddress";

Хотя переменные правильно помещаются в скрипт с использованием функции echo в конце скрипта после отправки запроса API, они показывают, что они вставлены правильно, вот так:

http://myurl/api?api=MYAPI&format=text&url=http://myfullwebsite.com/email/quote.php?fullname=Dan Smith&address=12 Main Street, London&[email protected]

Однако, если я щелкну сокращенный URL-адрес, предоставленный мне из скрипта, в браузере появится только следующая строка URL-адреса:

http://myfullwebsite.com/email/quote.php?fullname=Dan

Кажется, как только появляется пробел или даже если нет второго имени, такого как Дэн Смит, и только Дэн является доступным именем, он даже не применяет второй амперсанд или & знак.

Я пытался использовать urlecode() но все равно нет радости, и я выдергиваю свои волосы последние 3 дня!

Как начинающему новичку было довольно сложно попытаться достичь конечного результата, и он кажется недостижимым, поэтому я был бы признателен за любую помощь или совет, если это возможно. Может быть, я что-то упускаю так просто?

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

Вот мой полный код API, где я пробовал оба с SESSION а также GET но это не проблема, так как конечный результат отражается в браузере с переменными там … только когда вы переходите по сокращенной URL-ссылке, вы видите, что они отсутствуют.

    <?php
session_start();

$fullname = htmlspecialchars($_GET["fullname"]);
$address = htmlspecialchars($_GET["address"]);
$postcode = htmlspecialchars($_GET["postcode"]);
$emailaddress = htmlspecialchars($_GET["emailaddress"]);


$short = "http://myurl/api?api=MYAPI&format=text&url=http://ukhomesurveys.co.uk/email/quote.php?fullname=$fullname&address=$address&emailaddress=$emailaddress";


echo $short;

// Using Plain Text Response
$api_url = $short;
$res= @file_get_contents($api_url);
if($res){
echo $res;
}


?>

Надеюсь, я все осветил и надеюсь, что никого не смутил. Благодарю.

1

Решение

Я думаю, что хороший выбор здесь — это закодировать ваш запрос с помощью base64, а затем передать его сокращающему устройству. В вашем http://myfullwebsite.com/email/quote.php Вы просто декодируете запрос и используете его. Стандартными функциями PHP являются base64_encode и base64_decode.

1

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

Вы пытались кодировать URI, используя rawurlencode?

$url = rawurlencode('http://myfullwebsite.com/email/quote.php?fullname=Dan Smith&address=12 Main Street, London&[email protected]');
0

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