0

これが話です。データベースを使用せずにPHPで(かなり)単純なログインをコーディングしています。はい、同意します。安全でなく汚い方法ですが、私はただ学んでいます。とにかく、コードはシンプルで、セッション以外はすべて正常に動作します。panel.php管理者のみがアクセスできる保護されたページに攻撃者がアクセスできないようにしようとしています。フォーム付きのindex.phpログインページです。

config.php

<?php
$loginToken =   '123456';

$uname      =   'test';
$upass      =   '123123';


$a_login        =   'index.php';
$a_panel        =   'panel.php';
$a_list     =   'list.php';
$a_add      =   'add.php';
$a_other        =   'other.php';
?>

index.php (ログインフォーム - 何らかの理由で、SO ではコードを正しく貼り付けることができません):

<?php
// Load & start a session before everything
session_start();

// If session is already loaded, get into panel area
if ($_SESSION['login'] == "1") {
        Header("Location: $a_panel");
}

// Load configuration file
include_once('cfg/config.php');

if (isset ( $_POST ['username'] )) {
        $password = $_POST ['password'];
        $username = $_POST ['username'];

        if ($password == $upass && $username == $uname) {
                header ( "Location: $a_panel" );
                exit (); }
}
?><html>
<head>
        <title>Test</title>
        <link rel="stylesheet" href="css/login.css" media="all" />
</head>
<body>

<br /><br />
<center><a href="index.php"><img src="images/logo_b.png" /></a></center>
<br /><br />

<?php
        if (isset($_GET['nToken']))     // A little bit of security (index.php?nToken=123456)
        {
                if ($_GET['nToken'] == $loginToken) { ?>
                <form id="login" action="" method="post">
                  <fieldset id="inputs">
                      <input name='username' id="username" type="text" placeholder="Username" autofocus required>  
                      <input name='password' id="password" type="password" placeholder="Password" required>
                  </fieldset>
                  <fieldset id="actions">
                      <input type="submit" id="submit" value="Log in">
                  </fieldset>
                </form>
<?php
        }
        }
echo '
</body>
</html>';
?>

panel.php (管理者エリア)

<?php
session_start();
    // Insert a config file
    require_once('cfg/config.php');

    // Check if logged (and if loaded display buttons)
    if ($_SESSION['login'] == "1") {
?>

<head>
    <title>
        Admin panel @ TEST
    </title>
    <link rel="stylesheet" href="css/bg.css" media="all" />
    <center><img src="images/header_1.png" /></center>

<div class="hot-container">
    <p>
        <a href="#" class="btn btn-blue">Listing</a>
        <a href="#" class="btn btn-blue">Add new</a>
        <a href="#" class="btn btn-blue">Settings</a>
    </p>
    <p>
    </p>
</div>

<?php
}
?>

私の知る限り、コードは必要なsession_start()場所 (config.php を除く) に投稿されているため、問題なく動作するはずですが、セッションは登録されていません。(構成ファイルから)フォームに入力した情報を使用してにアクセスするpanel.phpと、空白のページが表示されるため、それがすべてではありません。URLに「/panel.php」と入力してアクセスしても、空白のページになってしまいます。

今、私はそれが私と私の知識のレベルだけであるか、php.iniで行う必要があるいくつかの修正があることに興味があります:)以前に同じ質問でSOからできるだけ多くの情報を取得しようとしていたことに注意してください。何があっても働く。

ありがとう!

4

0 に答える 0