| 如何用PHP对文本文件加密并限制特定页面的存取 |
| 来源:
发布时间:2007-11-08 发布人:
浏览:
人次
字体:
[大
中
小]
|
|
接下来,你需要创建完成实际工作的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);
132 三、 使用口令
为了使用输入到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语句处理一个空的$password变量以防止当输入框为空时,submit按钮被点击。如果用户输入的口令与存储的那个不匹配,那么第二个语句执行括号内的代码并且输出一条消息显示口令是错误的。最后,如果前两个条件都不满足,那么,该脚本认为口令一定是正确的并且把一个重定向头(header)发送到浏览器以打开示例中的HTML页面。
在此能够工作之前,你需要创建一个文本文件并且把它放到与该PHP文件相同的目录下。它需要包含你目前想要使用的以普通文本形式存储的口令,并且应该引用该PHP文件名。保存所有这些文件,然后在一个浏览器中打开该HTML页面,并用该表单进行试验。该页面应该如所设想的那样工作。
当你输入正确的口令时,如果你得到一个错误消息,其内容是:
| "Warning: Cannot modify header information - headers already sent by (thepathtoyourphpfile)" |
这意味着,你需要把位于你的Windows目录下的php.ini文件中的output-buffering设置为"on"。
共3页: 上一页 [1] 2 [3] 下一页
| |
| |
|
|
|
|
| §最新评论:(评论内容只代表网友观点,与本站立场无关!) | |
|
|
|
|
| 注意:请勿在本站发布政治话题、色情及违反法律的内容。 |
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。 |