我是php的新手,我想知道这样做是否安全... ... 我目前有一个登录系统来保护几页。
文件:
- not_logged_in.php
- test.php
- login.php
- logout.php
- protected_page_1
- protected_page_2
- unprotected_page_1
代码:
not_logged_in.php:
<html>
You are not logged in!
</html>
test.php的:
<?php
$logged_in = false;
function protect_page() {
if($logged_in == false) {
header('Location: index.php');
exit();
}
}
?>
的login.php:
<?php
include "test.php";
$logged_in = true;
?>
logout.php:
<?php
include "test.php";
$logged_in = false;
?>
protected_page_1.php:
<?php
include "test.php";
protect_page();
?>
<html>
Content
</html>
protected_page_2:
<?php
include "test.php";
protect_page();
?>
<html>
Content
</html>
unprotected_page_1:
<html>
Content
</html>
我完全理解login.php页面只是登录而你不必提供密码,但这仅用于当前的测试......
感谢阅读!
答案 0 :(得分:3)
我认为使用这个$ logged_in变量的方式太松了。
我建议使用会话。
session.php文件:
<?php
session_start(); // start on top of your page before any output
if(!isset($_SESSION['loggedin'])) {
$_SESSION['loggedin'] = false;
}
function loggedin()
{
return $_SESSION['loggedin'];
}
?>
以及包含受保护内容的任何页面。
<?php
include 'session.php';
if(!logged_in()) {
include 'login.php';
exit();
}
// some info
?>
login.php将有一个表单登录。(和$_SESSION['loggedin'] = true;
每个页面都可以包含session.php。
答案 1 :(得分:1)
是的,它受到了保护。也许您可以存储显示用户在会话存储中记录的天气的变量,以使其更加高效。