兰色精灵 发表于 2015-2-4 00:30:07

PHP网站制作之用Session对Web页面停止回护

理解网站这一概念之后不难看出,任何网站都是由网页组成的,也就是说想完成网站,必须先学会做网页,因此必须要掌握了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语法

再现理想 发表于 2015-2-4 13:14:46

首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。

柔情似水 发表于 2015-2-4 13:14:46

有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。

蒙在股里 发表于 2015-2-7 17:57:54

开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。

莫相离 发表于 2015-2-8 03:51:14

写的比较杂,因为我也是个新手,不当至于大家多多指正。

乐观 发表于 2015-2-10 01:16:23

学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。

仓酷云 发表于 2015-2-14 19:26:45

我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:

兰色精灵 发表于 2015-2-28 00:45:41

建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。

admin 发表于 2015-3-2 12:58:42

当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,

老尸 发表于 2015-3-10 00:18:45

作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。

简单生活 发表于 2015-3-10 23:09:13

我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。

若相依 发表于 2015-3-15 07:37:21

首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。

深爱那片海 发表于 2015-3-20 15:23:45

环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。

谁可相欹 发表于 2015-3-23 01:08:07

最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。

不帅 发表于 2015-4-12 08:08:31

首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。

第二个灵魂 发表于 2015-4-12 20:48:54

其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。

小女巫 发表于 2015-4-18 13:56:18

有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。

分手快乐 发表于 2015-4-20 07:15:34

有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。

变相怪杰 发表于 2015-4-25 22:25:10

其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎

小妖女 发表于 2015-4-28 03:22:53

我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
页: [1]
查看完整版本: PHP网站制作之用Session对Web页面停止回护