文章目錄

现在写博客我一直用的hexo,hexo是基于静态网页的,它没法做一些访问控制,也就是说你不能控制一些网页的可见性,要么大家都能见,要么大家都看不见。最近想做个基于网页的博客管理平台,因为发现通过后台对博客进行一些小的修改太麻烦了,这肯定要做些访问控制,所有研究了下php。
首先是php运行环境的搭建

安装Apache: yum install httpd -y
安装php: yum install php -y
修改html目录权限 chown -R apache: /var/www/html/
启动Apache: service httpd start
现在就可以通过url访问/var/www/html/目录下的网页了

访问控制之登录

创建index.php,先判断用户是否已经登录,如已经登录则直接跳转到相关网页,如没有则进行登录验证。点击确定则提交验证请求。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
session_start();
if(isset($_SESSION['username'])){
header("Location: xxx.php");
exit;
}
?>

//下面是html登录模块,主要是通过form submit
<html>
......
<form name="LoginForm" method="post" action="login.php">
<input id="username" name="username" type="text" class="input" />
<input id="password" name="password" type="password" class="input" />
<input type="submit" name="submit" value="确定" class="left" />
</form>
......
</html>

访问控制之验证

创建login.php,判断是否是post请求,是则获取请求中的username和password进行验证,验证成功则跳转。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if(!isset($_POST['submit'])){
exit('非法访问!');
}
$username = htmlspecialchars($_POST['username']);
$password = ($_POST['password']);
if($username == "hexo" && $password == "123")
{
session_start();
$_SESSION['username'] = $username;
header("location:xxx.php");
exit;
}
else{
exit('登录失败!点击此处 <a href="javascript:history.back(-1);">返回</a> 重试');
}
?>

其他网页的访问权限

创建任意php文件,在头部添加以下代码就可以达到只有登录成功的人才可以访问的目的。

1
2
3
4
5
6
7
<?php
session_start();
if(!isset($_SESSION['username'])){
echo "您没有权限访问此页面";
exit;
}
?>

访问控制之登出

创建logout.php,写入以下内容

1
2
3
4
5
6
<?php
session_start();
session_destroy();
header("location:index.php");
exit;
?>
文章目錄