通过PHP的会话获取当前URL到下一页

时间:2009-08-16 14:53:38

标签: php session get url

如何在网址中使用问号之后的部分作为以下变量的输出?

$_SERVER['HTTP_REFERER'];

我运行不成功

if (0 !== $_GET['question_id'] && isset( $_GET['question_id'] ) ) {                                              
    $result = pg_execute( $dbconn, "query_fetch", array( $_GET['question_id'] ) ); 
}
if (isset( $_SERVER['question_id'] ) ) {
    $result = pg_execute( $dbconn, "query_fetch", array( $_SERVER['question_id'] ) ); 
}
                                                        // problem here!

4 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

您可以使用以下方式获取Referer的$_GET等效项:

$parts = explode("?", $_SERVER['HTTP_REFERER']);
$get = parse_str(end($parts))

每当使用变量$_SERVER时,请确保使用其中一个预定义变量。 $_SERVER['question_id']不太可能在$_SERVER数组中。

......
// These variables aren't normally present:
if (isset( $_SERVER['question_id'] ) ) {
    $result = pg_execute( $dbconn, "query_fetch", array( $_SERVER['question_id'] ) ); 
}

答案 2 :(得分:1)

如果要提取网址的网址参数,请尝试parse_str function

$query = preg_match('/\?([^#]*)/', $url, $match) ? $match[1] : '';  // extract query from URL
parse_str($query, $params);

修改以下是一个例子:

$url = 'http://localhost/?foo&bar=&baz=quux';
$query = preg_match('/\?([^#]*)/', $url, $match) ? $match[1] : '';
parse_str($query, $params);
var_dump($params);

输出:

array(3) {
  ["foo"]=>
  string(0) ""
  ["bar"]=>
  string(0) ""
  ["baz"]=>
  string(4) "quux"
}

答案 3 :(得分:0)

回复Gumbo的回答

我理解你的答案如下

$pattern = '/\?([^#]*)/';
$subject = $_SERVER['HTTP_REFERER'];
$query = preg_match($pattern, $subject, $match) ? $match[1] : '';  // extract query from URL
parse_str($query, $params);
$question_id = explode( "=", $query );           // to get the parameter
echo "This is the output: " . $question_id[1];  

如何在不使用爆炸的情况下访问变量$ params?

我执行以下命令失败

print_r( $params );
var_dump( $params );

前者给我 Array(),而后者没有。