我正在创建一个web目录,我已经创建了一个系统,以便管理员可以向网站添加内容。问题是内容是静态的,并且正在添加到目录中,因为我们想像mysite.com/test/content/ab.html
一样显示它,所以我如何使用php允许通过php访问该url,用户详细信息在mysql数据库中。我的意思是,如果用户已经登录并拥有权限,那么他可以看到mysite.com/test/content/ab.html
或content
中的任何文件,但如果他/她已经注销,那么它应该重定向。
编辑:我已经使用htaccess解决了一半的问题,现在它检查用户是否登录,但如果用户登录,我该如何重定向?这是我用的htaccess
# For security reasons, Option followsymlinks cannot be overridden.
#Options +FollowSymLinks +ExecCGI
Options +SymLinksIfOwnerMatch +ExecCGI
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !('.php)$
RewriteRule (.*) /index.php [QSA]
</IfModule>
如果不知道如何让用户登录,很难提供帮助(您必须这样做,您至少知道他们登录了,以及他们是哪个用户)我将假设一个基本的登录系统。
我做这件事的方式是基本的login.php页面,如果登录成功,设置一些基本会话(没有密码、用户名或敏感信息)并设置他们的用户级别(这样你就可以管理他们可以访问的内容)
例如,如果登录=成功:
$_SESSION['loggedin']['userlevel'] = $FromDatabase['userlevel'];
然后在包含在每个页面中的包含文件中(header.php或config.php)我有(我的config.php是在发送任何标题/浏览器输出之前等)
if (!isset($_SESSION))
{
session_start();
}
$strUserLevel = false;
if (isset($_SESSION['loggedin']['userlevel']))
{
$strUserLevel = $_SESSION['loggedin']['userlevel'];
}
然后我可以在整个网站上使用这个来控制他们的访问,:
if($strUserLevel == false)
{
header("location: login.php");
die();
}
//or wherever you want to redirect them
//or just say you need to be logged in to view this, link to login page (etc)
if ($strUserlevel < 3) // or whatever level they need for this page
{
echo "You cannot edit this page";
exit();
}
else
{
//a form or whatever
}
以上只是一些基本的例子。我的代码有点复杂,因为我总是在includes中使用config.php,并在那里设置全局变量以在整个站点范围内使用,并且有一个基本的登录检查功能(检查他们的当前IP是否与我在登录时检查并存储在DB和其他东西中的IP匹配)。
另一种权限控制方法是使用mysql表。因此,如果您有TABLE tblEditPageAB,任何名字在该表的一行中的人都可以编辑该页。虽然这更多地用于管理控制,即您有tblAdministrateOtherUsers-同样,任何在该表中有其姓名/详细信息的人都可以管理其他用户(或其他)
要检查这一点,只需查询即可,如果没有结果,则无法进行查询。
同样,最好的方法取决于你的网站、场景、你需要编辑的页面数量,以及它们是否是动态创建的,等等。有各种各样的方法,但希望我能给你思考的食物,并帮助你:)