PHP语言作为服务器端的脚本,是在服务器上被执行的。客户端(浏览器)请求时,PHP语言在服务器上被解析执行,生成html代码,然后通过服务器发送到浏览器,浏览器上已经没有PHP语言的任何信息,在客户端是看不到PHP源代码的。除非用非法的手段“黑”了服务器,才可以获取PHP的源代码。
利用PHP的这个特点,可以简单的设置密码访问。比如要求客户端输入密码,然后PHP的if语句判断密码是不是正确,正确的话显示某些东西给浏览器,错误的话就返回错误信息。
PHP“显示某些东西给浏览器”就是输出HTML代码,在PHP中常用echo语句来输出HTML代码:
echo "<html>"; echo "<head>"; echo "<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>"; echo "</head>"; echo "<body>"; echo "<h1>我是标题!!!</h1>"; echo "</body>"; echo "</html>";
一般来说先编写好HTML代码,然后把它们放到PHP脚本中,需要注意的是:
1、原来HTML中有双引号"的话,要先替换成单引号'。
2、原来HTML中有JS、Script的话,要将函数中的$替换成\$。
简单一些的HTML文件行数不多,如果行数多的话,每行HTML代码之前要添加echo ",每行末尾要添加";,太麻烦了。下面的办法可以将整段HTML复制进去,效果和上面一样:
echo <<<END <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <h1>我是标题!!!</h1> </body> </html> END;
这样的好处在于随时可以将HTML代码取出来,然后再次编辑、调试。注意END;必须是顶格且后面没有其他任何字符了!双引号不必替换成单引号,但是$前面还是要加\的!
再回到前面说的php验证密码,举例说明:
index.html显示密码输入框:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <html> <body> <form method="post" action="login.php"> <input type="password" name="password";><br> <input type="submit" name="submit" value="登陆" class="div20";> </form> </body> </html>
就像这样:
输入密码、点击登录后,index.html将密码传输给login.php:
<?php $password = (int)$_POST['password']; if($password == '123456'){ echo <<<END <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>文档</title> </head> <body> 经过了密码验证,你看到了这个文档 </body> </html> END; }else{ echo "<script>location.href='http://baidu.com';</script>"; } ?>
如果你输入的密码是123456,那么会显示一个标题为“文档”的网页给你看,如果密码错误,那么网页会跳转到百度。
这只是一个简单的示例,你可以将其复杂化,比如你输入用户名user密码password将展示哪一些预定内容;比如一个用户名配比多个密码,当输入用户名user密码password时展示一些简单的预定的内容,如果输入用户名user密码passwordABC123password这样复杂密码的时候,展示一些更加隐秘的预定内容,这样就不怕别人暴力破解了。