PHP加密文本文件并限制特定页面的存取

2016-01-29 13:26 15 1 收藏

PHP加密文本文件并限制特定页面的存取,PHP加密文本文件并限制特定页面的存取

【 tulaoshi.com - PHP 】

一、 简介

  尽管在一般情况下,你的网站往往相当简单以至它根本不要求使用数据库;但是在有些情况下,你的站点可能想限制对某些页面的存取。一般地,这意味着要使用一个数据库来存储口令和用户名。然而,你还有一个更容易的方法-尽管其安全性差了一点,但是它仅包含了极少的编码。

  如果你在自己的Web应用程序中使用了数据库,那么你已经能够在某处存储口令和用户名,并且有一种方法可用来认证访问者。但是,当因你的站点的安全性或复杂性需要而无法保证使用数据库时,那该怎么办?可能有些时候你仅想要一些特别的人存取你的站点的某些页面或一些区域。为此,一种很简单的方式就是使用一个存储口令的文本文件,并且创建一个页面来提示访问者输入口令;如果口令与存储在该文本文件中的内容相匹配,那么允许该用户存取受限的页面;否则,在开始刷新页面之前显示一条适当的消息以禁止其存取。

  为了进一步的安全起见,你还可以用哈希法来加密存储在文本文件中的口令,这样如果它的内容在某种程度上被发现,它还将会是很难被查明。所有这些都可以用PHP方法来构建,而且只需极少量的编码。

  在正式开始前,你需要建立一个环境来测试和使用PHP;所以,你首先需要为PHP安装和配置一个Web服务器。由于Apache与PHP协同工作良好,并且易于安装和配置,因此我推荐使用这一方案。

  接下来,你需要创建一个页面(类似下图)-它有一个文本框用于接收来自访问者的口令,还有一个submit按钮来把它发送到你的PHP文件。这既可以是一个新页面也可以是你的网站上的一个现有页面的一部分。象下面简单的代码块应该足够了:

<form name="passwordForm" method="post" action="restricted.php">
<p>Password:
<input type="password" name="password">
<input type="submit" name="Submit" value="Login">
</p>
</form>

  二、 创建PHP主页

  接下来,你需要创建完成实际工作的PHP主页。在一个文本编辑器中打开一个空白页面,然后以标准方式打开一个PHP块:

<?
  如我以前所提及的,PHP具有一套标准的函数和方法用来实现文件操作。其中,最为主要的几个是fopen(),fread()和fclose()函数。为了进行某种文件操作,我们需要先打开它,并且很明显,这是使用fopen()函数实现的;而且,我们必须指定如何操作文件;读文件,读文件是最普通的任务,但是另外一些额外标志可以用来告诉程序是把文件指针放在开始还是文件的结束,以及如果文件还不存在的话是否创建该文件。然而,在本例中,我们所需要做的是,打开包含口令字的文本文件并读取它。

  然后,首先创建一个到指定文本文件路径的变量:

$fileloc = "/apachesite/docs/pass.txt"

  接下来,创建一个变量来存放文件指针:

$filetoread = fopen($fileloc, "r") or die("Could not open password file");

  你也可以使用die方法来结束该脚本,并且如果操作因某种原因失败的话将在屏幕上打印一条适当的消息。一旦打开文件,你需要读取它的内容,以便把它与以口令字形式输入的内容进行比较:

$storedpass = fread($filetoread, filesize($fileloc)) or die ("Could not read stored password");

  你应该设置一个变量来存放文件中的数据,并且调用fread()方法(它有两个参数:文件指针和文件长度)。你可能知道(也可能不知道)你的口令的长度。为了使将来的编程容易些(当口令字需要改变时),你可以使用filesize()方法来得到文件长度。一旦文件不再需要,立即关闭之:

  fclose($filetoread);
三、 使用口令

  为了使用输入到HTML表单中的口令,你需要得到它并把它存储到一个变量中。当我们使用POST方法来把用户输入的内容发送到PHP脚本时,我们可以使用$_POST来取得输入的口令:

$password = $_POST["password"];
  然后,我们可以简单地把输入的口令字与存储的口令字进行比较并采取相应的措施:

if (empty ($password)){
die ("No password entered");
}
elseif ($password != $storedpass){
die ("Password Incorrect");
}
else{
Header("Location: securepage.htm")
}
?>
  第一个if语句处理一个空的$pa

来源:https://www.tulaoshi.com/n/20160129/1490173.html

延伸阅读
标签: Web开发
一、读取文本文件的步骤如下: 1、创建 FileSystemObject 对象实例; % Set fso=Server.CreateObject("Scripting.FileSystemObject") % 2、使用FileSystemObject对象的OpenTextFile方法返回一个 TextStream 对象实例; % Set txtFile=fso.OpenTextFile(filename[, iomode[, create[, format]]]) % ...
Java的IO操作都是基于流进行操作的,为了提高读写效率一般需要进行缓冲。     简单的示例程序如下:         /**  * 读出1.txt中的内容,写入2.txt中  *  */ import java.io.*; public class ReadWriteFile{  public static void main(String[] args){   try{ &nbs...
你需要做的第一件事是确定xp_cmdshell是可用的。你可以选择下面两种方法中的一种来实现。 1.你可以使用sp_configure并执行下面的脚本。 EXEC master.dbo.sp_configure 'show advanced options', 1 RECONFIGURE EXEC master.dbo.sp_configure 'xp_cmdshell', 1 RECONFIGURE 2.你可以使用Surface Area Configura...
标签: ASP
  昨天我问过这个问题,不过没人回答到点上,今天搞定了.贴出来给觉得有用的朋友,希望其他朋友不用走弯路. '文件内容读取. Function LoadFile(ByVal File)     Dim objStream     On Error Resume Next     Set objStream = Server.CreateObject("ADODB.Stream")     If Err...
标签: PHP
  管理你的留言在文本文件中实现不如数据库中那么方便,下面我们想办法来实现这个效果! 在输出的时候我们是用数组来保存数据,那么我们会很方便地为每组数据按顺序分配一个序号,通过对这个序号来操作,我们就可以方便地修改数据! $date[0]为文本文件中第一行,我们输出时分配序号为0. 输出时有这样的效果: <a href=”modify.p...

经验教程

205

收藏

57
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部