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 (用户登陆页面)的代码:
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 程式
}
?>
LoginPage
echo"$error"; #显示登陆提示
?>
Name:
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"
while($q->next_record()){ #从数据库中调出一般用户
if($user==$q->f(0)) #判断是否是当前用户
$select="selected"; #是当前用户则设置为默认值
else
$select="";
echo"
ucfirst($q->f(1))."". #用户名首字大写
ucfirst($q->f(2))."";
}
echo"";
?>
Password:
security2.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 (特殊用户页面保护摸板):
session_register("user"); #说明同上
$privilege="root,macro,jackie"; #设置超级用户名单列表,用“,”隔开
$pieces=explode(",",$privilege); #取得单个超级用户名单
for($i=0;$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(); #跳到无权用户登陆页面
}
?>

问题发现springboot项目生产session-out超时问题,描述下问题:在测试环境通过改动application.yaml配置session-out,经过设置不同时间验证session-out配置生效,于是就直接设置了过期时间为8小时发布到了生产环境。然而中午接到客户反应项目过期时间设置较短,半小时不操作就会话过期需要反复登陆。解决处理开发环境:springboot项目内置Tomcat,所以项目中application.yaml配置session-out是生效的。生产环境:生产环境发布是

php session刷新后没有了的解决办法:1、通过“session_start();”开启session;2、把所有的公共配置写在一个php文件内;3、变量名不能和数组下标相同;4、在phpinfo里面查看session数据的存储路径,并查看该文件目录下的sessio是否保存成功即可。

session php默认失效时间是1440秒,也就是24分钟,表示客户端超过24分钟没有刷新,当前session就会失效;如果用户关闭了浏览器,会话就会结束,Session就不存在了。

当您在使用PHP会话(Session)时,有时会发现Session在一个文件中可以正常读取,但在另一个文件中却无法读取。这可能会让您感到困惑,因为会话数据应该可以在整个应用程序中共享。本文将解释如何在多个文件中正确地读取和写入PHP会话数据。

1.基于session实现短信登录1.1短信登录流程图1.2实现发送短信验证码前端请求说明:说明请求方式POST请求路径/user/code请求参数phone(电话号码)返回值无后端接口实现:@Slf4j@ServicepublicclassUserServiceImplextendsServiceImplimplementsIUserService{@OverridepublicResultsendCode(Stringphone,HttpSessionsession){//1.校验手机号if

问题:今天项目中遇到了一个设置时间超时的问题,按SpringBoot2的application.properties更改一直不生效。解决方案:server.*属性用于控制SpringBoot使用的嵌入式容器。SpringBoot将使用ServletWebServerFactory实例之一创建servlet容器的实例。这些类使用server.*属性来配置受控的servlet容器(tomcat,jetty等)。当应用程序作为war文件部署到Tomcat实例时,server.*属性不适用。它们不适用,

JavaScriptCookie使用JavaScriptcookie是记住和跟踪偏好、购买、佣金和其他信息的最有效方法。更好的访问者体验或网站统计所需的信息。PHPCookieCookie是存储在客户端计算机上的文本文件并保留它们用于跟踪目的。PHP透明地支持HTTPcookie。JavaScriptcookie如何工作?您的服务器将一些数据发送到访问者的浏览器cookie的形式。浏览器可以接受cookie。如果存在,它将作为纯文本记录存储在访问者的硬盘上。现在,当访问者到达站点上的另一个页面时

近年来,微信小程序风靡全球,已经成为了许多企业和个人开发者的首选平台。在小程序的开发中,我们经常会遇到session问题,也就是如何在小程序中保存用户登录状态。这个问题对于网站开发者来说并不陌生,但在小程序中却有些不同。本文将介绍如何使用PHP解决微信小程序中的session问题。一、小程序登录过程概述小程序的登录流程与网站的登录流程类似,分为以下几个步骤:


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)