尝试使用PHP和数据库进行维护模式

时间:2015-08-11 23:25:29

标签: php mysql

好的,所以我遇到了我的代码问题,因为无论我将其更改为什么,它都会保留在索引页面上?

这是我的代码

<?php
// Maintenance mode

$system = (mysql_query("SELECT * FROM system"));

if($system['maintenance'] == 1)
{
header('Location: /maintenance');
exit;
}
?>

我想要它,所以如果维护= 1,它会将你发送到maintenance.php页面但不是任何人都可以帮助我吗?我试过了,

if(!$system['maintenance'] == 1)

哪个有效,但我在maintenance.php页面中有这个代码

<?php 
$system = (mysql_query("SELECT * FROM `system`"));

if(!$system['maintenance'] == 0)
{
header('Location: /index');
exit;
}
?>

我认为会把我发回到索引页面一旦它在数据库中显示它是0或者我想要它做的事情。任何人都可以解释为什么我的代码不起作用吗?

  

我是初学者php,mysql和C ++编码器/程序员,所以请尽量以最简单的方式解释它。

     

由于@ Script47,我修复了它。   新代码和作品

<?php
$system = mysql_query("SELECT * FROM system");
$results = mysql_fetch_array($system);

if($results['maintenance'] == 1)
{
    header('Location: /maintenance');
    exit;
}
?>

我不需要维护的扩展名的原因是因为我将它设置在.htaccess中以忽略它们,但是每个人都知道它是php文件。

2 个答案:

答案 0 :(得分:1)

您需要实际从数据库中获取结果。查看我提供的链接。我会用代码更新我的帖子。

State

http://php.net/manual/en/function.mysql-fetch-row.php

修改1

您的代码很容易SQL injection,即使已弃用,您仍然使用 <?php $system = mysql_query("SELECT * FROM system"); $results = mysql_fetch_row($system); if($results[yourColumnKey] == 1) { header('Location: /maintenance.php'); exit; } ?> ,您应该使用MySQLMySQLi准备好的语句。

修改2

您似乎没有在PDO上指定文件扩展名。

header();

什么是维护?一个header('Location: /maintenance'); --^ 文件?一个PHP文件?您还需要指定扩展名。

答案 1 :(得分:0)

由于你是一个自我描述的初学者,最好学习如何使用mysqli而不是使用旧的弃用代码。

下面基本上是相同的事情,但将持续超过当前版本的PHP。这是一个很好的习惯。 (请注意,如果您要在查询中使用任何变量,则需要查找Prepared Statements

$conn = new mysqli($host, $username, $password, $dbname);

$system = $conn->query("SELECT maintenance FROM `system`");
while ($row = $system->fetch_assoc()) {
    if($row['maintenance'] == 1) {
         header('Location: /maintenance');
         exit();
    }
    else {
        header('Location: /index');
        exit();
    }

}