这是故事。我在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获得尽可能多的信息无论如何都不起作用。
谢谢!