-1

私は、私たちのサイトでかなりシンプルだが効果的なメンテナンス設定を作成しようとしています. 関数が機能する方法はhttps://www.ourbusiness.org/assets/home2.do/unlock-maintenance、ユーザーがサイトの任意のページに到達した場合です。私は他の質問、特にこれを見てきましたが、これは改善できると思いました。そのような少量のコードを追加することによって。https://www.ourbusiness.org/legal/allheader()https://www.ourbusiness.org/error/offline/

まず、config.phpファイルは次のとおりです。

Config.Run.php:

<?php
define("URL", "https://www.ourbusiness.org");
define("MAINTENANCE", "1");

if(MAINTENANCE == 1) {
    if(!isset($_SESSION['MAINTENANCE_UNLOCK'])) {
        header("Location: ".URL."/error/offline/");
    }
}

ロック解除-maintenance.php

<?php
    include "Config.Run.php";
    session_start();

    if(isset($_POST)) {
        if($_POST['username'] == "admin" && $_POST['password'] == "admin") {
            $_SESSION['MAINTENANCE_UNLOCK'] = md5($_POST['username'].$_POST['password']);
            header("Location: ".URL."");
        }
    }
?>
<form action="" method="post">
    <h1>You are not logged in</h1>
    <b>Username: </b><input type="text" name="username" />
    <b>Password: </b><input type="password" name="password" />
    <input type="text" value="Unlock <?php echo TITLE; ?>" />
</form>

なぜこれが機能しないのですか?ファイルにアクセスして、サイトやディレクトリ内のページのロックを解除することさえできませんlegal

4

2 に答える 2

0

簡単な答えは....

session_start();

if(isset($_POST)) {
    if($_POST['username'] == "admin" && $_POST['password'] == "admin") {
        $_SESSION['MAINTENANCE_UNLOCK'] = md5($_POST['username'].$_POST['password']);
        header("Location: ".URL."");
    }
}

include "Config.Run.php";

また..他のスクリプトで..

if(MAINTENANCE == 1 && !isset($_SESSION['MAINTENANCE_UNLOCK'])) {
        header("Location: ".URL."/error/offline/");
    }
}

..これらを切り替えてください。詳細を含める必要があることはわかっていますが、コメントに記載されています。

于 2015-10-09T20:54:29.270 に答える
-1

誰かがこれを使用することに決めた場合、これは最も安全な認証システムではないことに注意してください

コードをいじってから問題を解決しました-解決策を思いつきましたが、それは非常に効率的です。以下の結果をご覧ください。

Config.Run.phpの内部:

define("URL", "https://www.ourbusiness.org");
define("MAINTENANCE", "1");

if(MAINTENANCE == 1) {
    if(!isset($_SESSION['MAINTENANCE_UNLOCK'])) {
        $current_file = explode('/', getcwd());
        $current_file = end($current_file);
        if ($current_file !== 'unlock-maintenance' && $current_file !== 'offline') {
            header("Location: ".URL."/error/offline/");
            exit();
        }
    }
}

そして、unlock-maintenanceディレクトリ内 (デフォルトのファイルindex.php)

<h2>Maintenance log in</h2>
<?php
if(isset($_POST) && !empty($_POST)) {
    if($_POST['username'] == "admin" && $_POST['password'] == "admin") {
        $_SESSION['MAINTENANCE_UNLOCK'] = md5($_POST['username'].$_POST['password']);
        header("Location: ".URL."");
    } else {
        echo '<p class="err_msg">That login attempt failed, please try again.</p>';
    }
} else {
    echo '<p>You must login using your username and password.</p>';
}

?>
<form action="" method="post">
    <div class="input_group">
        <label>Username</label>
        <input type="text" class="input" name="username" value="">
    </div>
    <div class="input_group">
        <label>Password</label>
        <input type="password" class="input" name="password" value="">
    </div>
    <input type="submit" value="Login" />
</form>

これが、適度に優れた保守システムを探している人の助けになることを願っています。

このadd logout linkにさらに機能を追加したり、ログインしているかどうかに応じてヘッダー/フッターを変更したりできることを忘れないでください。

于 2015-10-09T21:43:06.170 に答える