如何在网址中使用问号之后的部分作为以下变量的输出?
$_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!
答案 0 :(得分:1)
我认为您可能想要使用页面的引用。
http://archives.devshed.com/forums/php-windows-119/get-referer-with-php-2329588.html
答案 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];
我执行以下命令失败
print_r( $params );
var_dump( $params );
前者给我 Array(),而后者没有。