我想在数据库中保存用户正在查看的页面。我编写了代码,但每次将页面保存到数据库时,它都会保存字符串"favicon.ico"。但是当我对要保存在数据库中的变量进行var_dump时,它会显示"个人/消息"。
这是代码:
$page = isset($_GET['REQUEST_URI']) ? $_GET['REQUEST_URI'] : 'home';
var_dump($page); // Outputs: string(17) "personal/messages"
$this->query(
"UPDATE ".TBL_USERS." SET page = :page WHERE username = :id",
array(':page' => $page, ':id' => $username)
);
因此,当我查看数据库时,它说:"favicon.ico"。当我将变量 $page 更改为 = "家"时;它将主页保存到数据库而不是网站图标.ico。
以下是更多输出:
$page = isset($_GET['REQUEST_URI']) ? $_GET['REQUEST_URI'] : 'home';
var_dump($page); // Outputs: string(17) "personal/messages"
// Saves in database as "favicon.ico"
$page = $_GET['REQUEST_URI'];
var_dump($page); // Outputs: string(17) "personal/messages"
// Saves in database as "favicon.ico"
$page = "personal/messages";
var_dump($page); // Outputs: string(17) "personal/messages"
// Saves in database as "personal/messages"
有人知道问题吗?
用户的浏览器向favicon发出请求.ico因此它可以显示一个可爱的favicon。但是您的 htaccess 似乎将该请求重写到您的脚本中。您要么必须放置一个网站图标.ico。或者更改您的 htaccess 文件
您似乎遇到了 URL 重写问题(在您的 htaccess 文件或服务器配置中)。问题是对静态文件的请求也会重定向到您的 php 脚本,这就是为什么您的脚本也会获取/favicon.ico 请求并将其写入数据库的原因。
您必须验证 URL 重写规则,以防止静态文件 URI 重定向到脚本 URI。阿帕奇指南Nginx指南
而不是保存REQUEST_URi
从魔术常量__FILE__
中获取文件名并从中删除扩展名。
function chopExtension($filename) {
$ext = pathinfo($filename, PATHINFO_EXTENSION);
return preg_replace('/'.' . preg_quote($ext, '/') . '$/', '', $filename);
}
$page = chopExtension(__FILE__);