我有一个网站,目前有超过900个HTML文章目前可以查看任何人。我想更改它以限制仅通过成员资格查看某些文章。如果限制,我有标志在SQL数据库中的文章。有一篇文章索引与每篇文章的链接。该过程将检查文章是否受到限制,检查用户是否成员登录,然后显示,否则发送到登录页面或订阅页面。由于文章太多,我不能直接添加一些php来不显示文章。我的问题是在我的网页目录中放置这些文章页面的位置,以及如何防止某人直接访问该页面,但是一旦用户通过身份验证后又允许访问?任何输入赞赏。任何人都知道这方面的好参考书吗?网站的设计与限制内容的会员
回答
将文件移动到文档根目录之上,因此无法通过Web服务器进行访问。或者,将文件移动到您用密码保护的目录(.htaccess/.htpasswd对)。你永远不会泄露该密码,它只是为了防止直接访问这些文件。
然后,写一个代理文章的脚本。该脚本检查用户是否登录。如果不是,则将其重定向到登录页面。如果是,它从它的实际位置读取文章HTML,并发送它。
例:http://www.example.com/article.php?view=cooking.html
session_start();
if (!isset($_SESSION['logged_in'])) {
header("Location: login.php");
} else {
readfile("/path/to/articles/" . $_GET['view']);
}
你会想要做一些卫生上$_GET['view']
,以确保它不包含任何东西,但一个项目的名称。
您甚至可以使用mod_rewrite将您的当前URL和链接重写到您的.httaccess
/httpd.conf
中的代理脚本。事情是这样的:
RewriteEngine On
RewriteRule article/(.*)\.html articles.php?view=$1 [L]
如果您还没有PHP开发的任何现有的框架,在安全问题上的帮助,你可能会考虑的东西比甚至使用PHP来限制访问简单。阅读有关.htaccess文件,以及如何创建受保护的目录,以便在其中放置所有受限制的文章。然后,您可以设置用户帐户,并要求用户在阅读受限制的文章之前进行身份验证。
下面是如何设置的.htaccess用户授权/认证教程:
谢谢,但太多的.htaccess维护。不过,我会看看howto。 – KSB
你有几个基本的选择:
的代码添加到每个网页。你可能会自动化,所以它没有听起来那么糟糕。它实在不应该只是一个单一的包含。
找出如何让您的网络服务器软件(例如,apache)进行身份验证检查。取决于你的检查有多复杂,一个mod_rewrite外部映射程序可能能够做到。除此之外,现有的认证模块,或写一个相当简单的垫片并不困难(如果你知道C)
通过PHP提供所有页面加载。不幸的是,这可能会破坏现有的网址。您将想要查看的页面作为参数或路径的一部分(取决于服务器配置),然后检查脚本内部,并最终在检查通过时发送页面。
谢谢!我喜欢mod_rewrite的建议。 – KSB
最简单的方法很可能是将所有的aricle文件的网站根目录外,然后用PHP来接他们,如果允许客户端看到它。
例如:
<?php
if (isset($_GET['id']))
{
$articleDir = "/var/articles/";
// Assuming a "?id=1" query string is used to pass a numberic ID of
// an article. (Like: example.com/showArticle.php?id=1)
$articleID = (int)$_GET['id'];
$articleFile = "article_{$articleID}.html";
// Look through your SQL database to see if the article is restricted.
// I'll leave the codeing to that up to you though.
if (!$isRestricted || $isLoggedIn)
{
$path = $articleDir . $articleFile;
if (file_exists($path))
{
include $path;
}
else
{
echo "The requested article does not exist.";
}
}
else
{
echo "You have to be logged in to see this article.";
}
}
else
{
echo "No article ID was passed. Did you perhaps follow a bad link?";
}
?>
请注意,如果你想保留旧的链接活着,你可以使用Apache的mod_rewrite重写传入的请求,并传输给你的PHP文件。
编辑
如果你是新的mod_rewrite的和/或正则表达式这可能会帮助:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^article_(\d+)\.html$ fetchArticle.php?id=$1 [L]
</IfModule>
击溃任何链接,如example.com/article_123.html
到example.com/fetchArticle.php?id=123
无需客户端注意到它。
与丹格罗斯曼所做的相似,但是这个只取数字。
是的,是的。正是我在找什么。 – KSB
- 1. 限制Sharepoint中的网站内容
- 2. 将网站内容限制为300字
- 3. 角色和权限的会员网站
- 4. 设计/ CanCan - 限制性内容
- 5. 如何设计考虑openID的网站会员系统?
- 6. 设置Sharepoint网站内容
- 7. 会员路线与设计
- 8. Liferay的网页内容显示,禁用默认权限客户/网站成员
- 9. 会员网站codeigniter
- 10. 网站内容和会员数据库ID
- 11. 设计网站时的动态或静态内容
- 12. 标签与网站内容的类别?
- 13. “所有网站内容”权限页面
- 14. 制作独特的网站设计
- 15. 会员网站的网页设计最佳做法是什么? blah.com/username?
- 16. 网站内容
- 17. 设计限制登录管理员
- 18. 网站的Div限制
- 19. Drupal的 - 限制权限的网站
- 20. 网站使用谷歌网站管理员检测到的重复内容
- 21. 选择模块为网站设计和内容
- 22. 网站单一设计/模板不同内容
- 23. 网站设计 - 仅更改正文内容
- 24. 网站内容访问控制
- 25. 限制表格的内容
- 26. WordPress的限制内容
- 27. webview内容的限制android
- 28. 会员访问设计(访问会员)
- 29. 基于会员的网站的网站地图
- 30. 限制成员的某些网站功能
大家好,非常感谢。我一直在寻找答案,没有找到正确的解释。这些建议有很大帮助。太多的用户使用简单的.htaccess。旧的文章HTML很丑,但工作原理,我不想使用PHP编写文章内容。什么是一个好的编辑器(自动化?),当我准备好这样做时,它可以清理丑陋的html? – KSB