PHP Javascript维护页面



我在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;
   }
}

事实是$sitefalse,可能是由于查询问题引起的。修改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服务器

相关内容

  • 没有找到相关文章

最新更新