我在index.php中使用了这个
<?
include('config.php');
if($site->maintenance > 0){
echo "<script>document.location.href='maintenance'</script>";
exit;
}
?>
和在我的config.php检查数据库连接后
$site = mysql_fetch_object(mysql_query("SELECT * FROM problems"));
我在数据库中创建了一个表,并将其命名为problems
,但即使我将值设置为0,它也会将我转移到维护中。当我用var_dump($site)
检查变量$site
时,它输出:
bool(false)
,如果我这样检查它:var_dump($site->maintenance)
,它输出:
NULL
我要做什么来管理数据库的维护,当我想我的网站工作,我改变值?
为什么使用JS ?如果用户JS关闭了怎么办?我会用PHP
创建一个用于维护的表,列为maintenance_status
,现在它将保存一个布尔值,0 1…0 => off, 1 => on,将只保留一条记录,该记录将创建一次,之后将始终更新它…
然后创建这个函数
function check_maintenance($connection) { /* Call this function on every page,
pass your database connection var
as a function parameter */
$query = mysqli_fetch_array(mysqli_query($connection, "SELECT * FROM tbl_maintenance LIMIT 1"));
/* Limit 1 is optional if you are using only 1 row as I told you,
if you are keeping records of the previous maintenance, probably
you've to sort desc and use limit 1 */
if($query['tbl_maintenance'] == '1') { //Check boolean value, if it's on than redirect
header('Location: maintenance.php'); //Redirect the user to maintenance page
exit;
}
}
事实是$site
是false
,可能是由于查询问题引起的。修改mysql代码为:
$result = mysql_query("SELECT * FROM problems");
if(!$result) {
die(mysql_error();
}
$site = mysql_fetch_object($result);
进一步,你应该学习如何在PHP中启用错误消息。我猜有一堆人。它们在默认情况下是禁用的,因为它可能在生产系统中构成安全风险。但是当你在开发时,你必须启用它们。您可以在开发系统的php.ini
中启用它:
. ini :
...
display_errors=1
...
log_errors=1
...
error_log="/path/to/writable/file"
...
error_reporting=E_ALL
修改完php.ini
后,不要忘记重启web服务器