我一直在学习用 PHP 和 MySQL 制作博客的教程。但在教程结束时,完成的博客允许任何访问网站的用户编辑类别和发布。将网站的某些部分限制为我自己的最佳方式是什么?我想到了一个只有我可以登录的登录系统,或者.htaccess 中可能有一种方法。有什么建议么?
6 回答
构建您自己的 ACL 层,查看网络资源,但此链接应该是一个很好的起点
看看 PHP会话。
您需要一些用户列表来进行身份验证。如果这是一个数据库,请创建一个包含用户名和密码列的用户表。
在您放置的每一页的开头start_session()
。这保留了页面之间的会话。
创建登录页面和链接。在登录页面上,您根据您的用户列表验证传入的用户名和散列密码。如果用户通过身份验证,则添加一个会话变量来存储登录的用户。此外,登录后重新生成会话 ID以防止会话劫持。
在需要成员访问的每个页面上,检查以确保用户已登录。如果没有,则将他们重定向到登录页面。
如果您使用 .htaccess 来设置 HTTP 基本身份验证,您将只想阻止允许用户编辑博客的页面。
考虑在任何一种情况下添加 SSL (HTTPS),否则,如果人们在开放网络上,登录凭据可能会被盗。
你提到的两种方法都可以。
或者,您可以只安装一个强大、安全、功能齐全的博客。例如http://wordpress.org
Make a user login module and use session check for that place for example user logged in and his you store his user id or something in $_SESSION['is_user']
then check for private content
if(isset($_SESSION['is_user'])){
//Show
} else {
//Redirect to login page
}
I think first alter the links to post editing page and use a login system .
sample code,
save file as : login.php
<form method="post">
name : <input name="name">
password : <input name="name">
<button> login </button>
</form>
<?php
session_start();
define('name','your name');
define('password','your password');
if($_SERVER['REQUEST_METHOD'] == "post"){
if($_POST['name' == name && $_POST['password'] == password){
$_SESSION['logged_in'] = 'yes';
header('location:admin.php'); //you can change this
}
}
?>
如果你想要一个个人博客或类似的东西,最好使用社区支持的,你不需要重新发明,把你的时间花在更有成效的事情上。
您的选择是:
- Wordpress,他有一个很大的社区和很棒的文档。http://wordpress.com/
- Habari,habari 的重要之处在于它是使用 OOP 设计的。http://habariproject.org/en/