检索包含来自 URL 的链接的变量


Retrieving variables that contain links form URL

>假设我有以下网址:

http://www.domain.net/?page=offsite&url=https://www.domain.com/LoanRequest/page.aspx?CUID=10414424&LOID=850&ChannelId=4078715104014180815

当我执行以下操作时:

回声 ($_GET["网址"]);

我得到以下信息:

https://www.domain.com/LoanRequest/page.aspx?CUID=10414424

这不是整个链接,我知道为什么 - 它假设"&"是用于新变量......

如何抓取整个链接,或者是否有某些方法需要对原始链接进行编码?

你能试试这个吗:

$link = $_GET['url'] . "&LOID=" . $_GET['LOID'] . "&ChannelID=" . $_GET['ChannelID'];

按照原始URL的定义方式,"url"将仅被视为GET参数之一,这意味着您需要单独获取其他GET参数才能构造完整的URL。更新:根据Ben Fortune的建议更改了url变量。

如果站外 url 的结构是不可预测的,那么我会使用 $_SERVER['QUERY_STRING'] 并使用字符串函数来实现我需要的东西。如果它是可预测的,我会使用 Maxiums2012 给出的答案,除非您也控制链接,那么我建议像其他人一样,在发送之前对站外网址进行编码。

那么,您拥有的 URL 不正确。

网址

基本网址是

http://www.domain.net/

其参数为

page=offsite
url=https://www.domain.com/LoanRequest/page.aspx?CUID=10414424
LOID=850
ChannelId=4078715104014180815

如果您希望 LOID 和 ChannelID 与该 url= 参数相关联,则应使用 urlencode() 将其编码为

http://www.domain.net/?page=offsite&url=https://www.domain.com/LoanRequest/page.aspx?CUID=10414424&LOID=850&ChannelId=4078715104014180815

如果创建原始链接,则应从 url 编码传递所有查询变量

喜欢

$q_url = 'https://www.domain.com/LoanRequest/page.aspx?CUID=10414424&LOID=850&ChannelId=4078715104014180815';
$url = 'http://www.domain.net/?page=offsite&url='.urlencode($q_url); 

然后通过$_GET["url"]你应该得到整个网址

这是我们根据TecBrat的建议最终所做的:

//get URL
$offsite_url = $_SERVER['REQUEST_URI'];
//break about URL
$offsite_url = str_replace('/?page=offsite&url=', '' , $offsite_url);
//clean input
$offsite_url = cleaninput($offsite_url);

(清洁输入是一个消毒功能)

我不认为这是理想的解决方案(也许是 - 接受反馈),但它似乎正在工作。 Urlencode似乎是一个更好的解决方案,但这不是一个选择。