我想保存用户在数据库中查看的页面。我编写了代码但每次将页面保存到数据库时都会保存字符串“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更改为=“home”时;它将主页保存到数据库而不是favicon.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"
有人知道这个问题吗?
答案 0 :(得分:2)
用户的浏览器向favicon.ico发出请求,因此它可以显示一个可爱的图标。但是您的htaccess似乎会将该请求重写为您的脚本。你要么必须放置一个favicon.ico。或者更改你的htaccess文件
答案 1 :(得分:1)
而不是保存REQUEST_URi
从魔术常量__FILE__
中获取文件名并从中删除扩展名。
function chopExtension($filename) {
$ext = pathinfo($filename, PATHINFO_EXTENSION);
return preg_replace('/\.' . preg_quote($ext, '/') . '$/', '', $filename);
}
$page = chopExtension(__FILE__);
答案 2 :(得分:1)
您似乎遇到了网址重写问题(在您的htaccess文件或服务器配置中)。问题是对静态文件的请求也会重定向到您的php脚本,这就是您的脚本也获取/favicon.ico请求并将其写入数据库的原因。
您必须验证您的URL重写规则,以防止将静态文件URI重定向到您的脚本URI。 Guide for Apache Guide for Nginx