我在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设置为0,它也会将我转移到维护中。当我通过$site
检查变量var_dump($site)
时,它会输出:
bool(false)
如果我这样检查它:var_dump($site->maintenance)
它会输出:
NULL
我需要做些什么才能从数据库管理维护,当我希望我的网站工作时,我会改变价值?
答案 0 :(得分:2)
为什么要使用JS呢?如果用户JS关闭怎么办?我会用PHP代替
使用列maintenance_status
创建一个维护表,现在这将保留一个布尔值,0 1 ... 0 =&gt; off,1 =&gt; 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;
}
}
答案 1 :(得分:0)
$site
为false
的事实可能是由查询问题引起的。将mysql代码更改为:
$result = mysql_query("SELECT * FROM problems");
if(!$result) {
die(mysql_error();
}
$site = mysql_fetch_object($result);
此外,您应该学习如何在PHP中启用错误消息。我想其中有很多。它们默认是禁用的,因为它可能是生产系统中的安全风险。但是当你在开发时,必须启用它们。您可以在php.ini
开发系统中启用它:
的php.ini :
...
display_errors=1
...
log_errors=1
...
error_log="/path/to/writable/file"
...
error_reporting=E_ALL
修改php.ini
后,不要忘记重启Web服务器。