如何将查询参数作为查询字符串发送?

时间:2016-06-27 10:02:32

标签: php redirect uri

我有这种情况。我正在为我的应用程序实施付款,网址就像http://example.com/payment?referenceId=123。在此之前,我需要检查身份验证,如果用户未登录,则需要使用redirect_url概念。我有redirect_url的这个网址:http://example.com/login?redirect_url=URL 由于我在源URL中也有查询参数,因此我无法将该URL用作redirect_url。我怎么能这样做?

3 个答案:

答案 0 :(得分:1)

执行此任务的一种可能方法是在重定向到登录页面时将http://example.com/payment?referenceId=123存储在会话中,并在完成登录时检查会话是否具有重定向值,然后从会话重定向到该URL。

答案 1 :(得分:0)

将身份验证存储referenceId检查为会话变量。在您的身份验证页面中启动会话,并检查url-referenceId是否等于该特定会话的存储userId。

session_start(); 

$_SESSION['referenceId'] = 123; 

if((url_ReferenceId)=$_SESSION['referenceId'])
{

//Check for authentication
}

答案 2 :(得分:0)

对于网址http://example.com/login?redirect_url=http://example.com/payment?referenceId=12 3

使用$redirect_url = $_GET['redirect_url'];  // $ redirect_url包含http://example.com/payment?referenceId=12 3

然后使用php的内置函数parse_url过滤掉' referenceId'来自$redirect_url

<?php
$url = '//www.example.com/path?googleguy=googley';

var_dump(parse_url($url));
?>

array(3) {
  ["host"]=>
  string(15) "www.example.com"
  ["path"]=>
  string(5) "/path"
  ["query"]=>
  string(17) "googleguy=googley"
}

检查更多信息http://php.net/manual/en/function.parse-url.php

此部分googleguy=googley实际上会保存您所需的数据