可能重复:
php中的全局变量未按预期工作
我有一个php函数,它运行在网站的每个页面上,它使用一个全局变量,例如:
$var = "test";
function test() {
global $var;
echo $var;
}
当直接访问/anyFile.php时,这很好,但网站使用htaccess文件来重写url,类似于:
RewriteRule ^action/(.*)$ /index.php?action=$1 [L]
当htaccess重写url时,该函数不起作用,也没有设置$var。
会发生什么情况?我该如何解决(我需要使用"global",否则我需要重新编码很多东西。
您需要使用[QSA,L]
而不是[L]
:
RewriteRule ^action/(.*)$ /index.php?action=$1 [QSA,L]
QSA代表Query String Append,并将查询字符串(url中?
之后的部分)转发到PHP脚本。
顺便说一句,您不应该使用register_globals(从PHP 5.3起已弃用,从PHP 5.4起已删除),而应该使用$_GET
superglobal。
---编辑---
根据你在下面的评论(你不能修改.htaccess),你运气不好了。您唯一的解决方案是解析请求URI中的查询字符串,并像使用$_GET
superglobal:一样使用它
$queryString = parse_url($_SERVER['REQUEST_URI'], PHP_URL_QUERY);
parse_str($queryString, $query);
echo $query['action'];
不过,我强烈建议您为您修改.htaccess
。