PHP Javascript维护页面

时间:2013-05-04 11:32:18

标签: php javascript maintenance

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

我需要做些什么才能从数据库管理维护,当我希望我的网站工作时,我会改变价值?

2 个答案:

答案 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)

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