|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
理解网站这一概念之后不难看出,任何网站都是由网页组成的,也就是说想完成网站,必须先学会做网页,因此必须要掌握了HTML,才能为今后制作网站打下基础。session|web|页面 在良多时分,咱们都要对某些Web 页面停止平安回护。典范的例子就是前台阅读页面与后台办理页面的平安性。这也是 WEB 上用得最多的一种页面平安形式。在用PHP4 开辟一个小型的书本办理体系中,我也碰到了这个平安成绩。因而我想到了PHP4 的新特征----Session ..
请求目标:统一站点,无权用户,普通受权用户和超等用户能看到和利用分歧的页面。
完成举措:在要回护的页面 include 分歧级其余平安查验摸板。
注重事项:
1 > 要防止用户阅读器不利用 cookie 而不克不及阅读受回护的页面(session 默许利用客户真个 cookie).
2 > 要避免权限被盗用。( PHP 4 的 session 的默许存活时代是从创立 session 入手下手到封闭阅读器为止。)
若何利用:
1 > 在需求普通回护的页面的代码最前边加上 include ("secturity2.php"); 就好了
2 > 在需求特别回护的页面的代码最前边加上 include ("secturity1.php"); 和 include ("secturity2.php"); 就好了
(假定一切文件都在统一个文件夹里)
法式代码及具体注释:
security1.php 特别用户页面回护摸板
security2.php 普通用户页面回护摸板
login2.php 用户上岸页面
咱们先来看 login2.php (用户上岸页面)的代码:
<?php
session_register("user");#增添用户名变数
session_register("password"); #增添暗码变数
session_register("tmLast"); #增添工夫变数
if($user==""){#判别是不是是第一次上岸
$error="Chooseyounameandinputthepasswordplease!";
}
$tmLast=date("U"); #纪录上岸工夫
if($user1)
$user=trim($user1); #纪录用户名(援用user1变量是为何?请读者本人思虑。)
$password=trim($password1); #纪录暗码
if($user1&&$password1){
if($password1==888){ #判别上岸暗码是不是是默许暗码888停止 PHP 程式
$sid="PHPSESSID=".session_id(); #保留以后session的ID号
$warning="Yourpasswordisstillthedefaultpassword888,pleasechangeit.";
header("Location:changePassword.php?$sid&warning=$warning"); #传递正告参数warning到changePassword.php 页面
exit(); #立即停止 PHP 程式
}
if(strtolower($user)=="root"){ #判别上岸用户是不是是超等用户,可以自行扩大用户
$fileName="backend_index.php";
}
else{
if(!$fileName) #判别进入上岸页面的上一页是不是是受回护页面
$fileName="index.php";
}
$sid="PHPSESSID=".session_id(); #保留以后session的ID号
header("Location:$fileName?$sid); #上岸胜利进入指定页面,传递以后session的ID号,避免用户不利用 cookie 而读不到 session 值
exit(); #立即停止 PHP 程式
}
?>
<html>
<title></title>
<head>
<linkrel="stylesheet"href="class/style.CSS">
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
</head>
<h2>LoginPage</h2>
<?php
echo"$error"; #显示上岸提醒
?>
<formaction="<?phpecho$PHP_SELF;#提交到以后页?>"method=post>
<P><b>Name:</b>
<?php
include("class/dbclass.inc"); #挪用dbclass.inc类,用法和 mysql.inc 类一样
$q=newDB_Sql; #界说一个新的对象
$q->connect($Host,$Database,$User,$Password); #毗连 mysql数据库
$query="selectchrUserName,chrFirstName,chrLastName".
"fromUser".
"wherechrFirstName!=''".
"orderbychrFirstName";
$q->query($query); #履行sql语句
echo"<selectname=user1size=1>";
while($q->next_record()){ #从数据库中调出普通用户
if($user==$q->f(0)) #判别是不是是以后用户
$select="selected"; #是以后用户则设置为默许值
else
$select="";
echo"<optionvalue='".$q->f(0)."'$select>".
ucfirst($q->f(1))."". #用户名首字大写
ucfirst($q->f(2))."</option>";
}
echo"</select>";
?></P>
<P><b>Password:</b><INPUTname=password1type=password></P>
<INPUTname=tmLasttype=hiddenvalue=<?phpechodate("U")?>>
<INPUTname=fileNametype=hiddenvalue=<?phpecho$fileName?>>
<P><INPUTname=submittype=submitvalue=确认></P>
</form>
security2.php (普通用户页面回护摸板):
<?php
session_register("user"); #申明同上
session_register("password");
session_register("tmLast");
if($fileName=="")
$fileName=$PHP_SELF; #纪录以后页面途径
if($durtime=="")
$durtime=300; #设置 session “生效”工夫
$currtime=date("U");
if(($currtime-$tmLast)>$durtime){ #判别 session是不是“生效”
//session_destroy();
$error=urlencode("Seesionexpired.Loginagainplease!");
header("Location:login2.php?fileName=$fileName&error=$error&user=$user"); #跳到从头上岸页
exit();
}
else{
$tmLast=$currtime; # session 没“生效”则更新最初“上岸”工夫
}
include("class/dbclass.inc");
$q=newDB_Sql;
$q->connect($Host,$Database,$User,$Password);
$query="selectidUserfromUser".
"wherechrUserName='$user'".
"andchrPasswd='$password'";
$q->query($query);
if(!$q->num_rows()){ #判别是不是找到暗码婚配的用户
$error=urlencode("PasswordiswrongorNoprivilegeuser.");
header("Location:login2.php?fileName=$fileName&error=$error&user=$user"); #跳到暗码毛病上岸页
}
else{
$sid="PHPSESSID=".session_id();
$q->next_record();
$USERID=$q->f(idUser); #保留经由过程验证用户的ID号,便利今后利用
}
?>
security1.php (特别用户页面回护摸板):
<?php
session_register("user"); #申明同上
$privilege="root,macro,jackie"; #设置超等用户名单列表,用“,”离隔
$pieces=explode(",",$privilege); #获得单个超等用户名单
for($i=0;$i<count($pieces);$i++){
if(strtolower($user)==$pieces[$i]){ #判别是不是是超等用户
$hasPrivilege=1;
break; #跳出判别轮回
}
}
if(!$hasPrivilege){
if($fileName=="")
$fileName=$PHP_SELF;
$error=urlencode("Youhavenoprivilegetoviewthispage!");
header("Location:login2.php?fileName=$fileName&error=$error&id=$id");
exit(); #跳到无权用户上岸页面
}
?>
理解动态语言的概念,运做机制,熟悉PHP语法 |
|