分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

PHP之ThinkPHP框架(会话)

发布时间:2023-09-06 02:30责任编辑:沈小雨关键词:PHP

    网页会话即是实现页面跳转及数据传递,在web开发中,Cookie和Session的使用是极其重要的,GET和POST是最常使用的页面间数据传递的方法,相对于PHP脚本基础,在ThinkPHP中对网页会话都进行了上层封装。

脚本的会话基础:PHP的会话控制

页面跳转:

在控制器或模板中要做页面跳转时使用

1 exit(header("Location: ../控制器/方法"));

超链接:

在视图的HTML里如果要超链接到本地的控制器则需要使用

1 href="{:url(‘控制器/方法‘)}"

JS传递参数:

利用其传递GET数据到后台,实现数据交互

1 window.location.href="../控制器/方法?u_id="+u_id+"&u_state=停用";

GET和POST的数据获取:

 1 <?php 2 namespace app\index\controller; 3 ?4 use think\Request; 5 ?6 class Xiao 7 { 8 ????public function xiao2(){ 9 ????????10 ????//获取到访问信息11 ????$re=Request::instance();12 13 ????echo "当前域名:".$re->domain();14 15 ????echo "获取 GET 或者 POST 参数值:".$re->param("name");//也可以为input("name");16 ????dump(input());//$也可以为:re->param() 打印所有获取的值17 18 ????$methodx=$re->method();19 ????echo "当前的请求方法:".$methodx;20 21 ????//获取get数据22 ????if($methodx=="GET"){23 ????????echo $re->get("getn")."<br/>";24 ????????dump($re->get());25 ????????}26 27 ????//获取post数据28 ????if($methodx=="POST"){29 ????????echo $re->post("postn")."<br/>";30 ????????dump($re->post());31 ????????32 ?????????}33 34 ????}35 36 }

Session的基本使用:

 1 <?php 2 namespace app\index\controller; 3 ?4 //导入必要的模块 5 use think\Session; 6 ?7 class Xiao 8 { 9 ????public function xiao2(){10 ????//设置值11 ????Session::set(‘name1‘,‘thinkphp‘);12 ????13 ????//判断session值是否存在14 ????if(Session::has("name1")){15 ????????echo "--------------------------";16 ????}17 ????18 ????//获取某个值19 ????echo Session::get(‘name1‘);20 ????21 ????//删除某个值22 ????//Session::delete(‘name1‘);23 ????//清空所有24 ????Session::clear();25 ????26 ????//session数组的设置27 ????Session::set("n2.nn1","aa1");28 ????Session::set("n2.nn2","aa2");29 ????//获取某个值30 ????echo Session::get("n2.nn1");31 ????//打印数组中所有值32 ????dump(Session::get("n2"));33 34 ????}35 36 }

Cookie的基本使用:

 1 <?php 2 namespace app\index\controller; 3 ?4 //导入必要的模块 5 use think\Cookie; 6 ?7 class Xiao 8 { 9 ????public function xiao2(){10 ????????11 ????//cookie单值,时间单位为秒 ???12 ????Cookie::set(‘name1‘,‘value‘,3600);13 ????//cookie数组14 ????Cookie::set(‘name‘,[1,2,3]);15 ????//判断是否存在16 ????if(Cookie::has("name")){17 ????????//打印出数组18 ????????dump(Cookie::get("name"));19 ????}20 ????//删除某个21 ????Cookie::delete(‘name‘);22 ????//清空所有23 ????Cookie::clear();24 ????}25 26 }

利用Session的登入判断:

      Session的值是保存在WEB服务器中的,利用其来做当次的登入判断是常用的一种方式,首先应该在用户名密码匹配成功后进行Session的写操作,接下来是验证Session内容,进行登入判断。

     本来觉得验证写在控制器中就好了,结果发现一旦程序庞大后每个控制器中的方法就多了,因为每个方法就代表着一个入口,所以这是不可取的。如果把Session判断写在模板的构造函数中,因为模板表示这一个数据库的数据表且基本上控制器中的方法都会设计到数据表的操作,这样整体下来很好的实现了登入验证功能。

先导入必要模块:

1 use think\Session;

模板的构造函数编写:

 1 //构造函数 ????2 function ?类名(){ 3 ?4 ???//判断session ????5 ??if(!Session::get("username")){ 6 ?7 ??????//非登入,跳转页面 ????8 ??????exit(header("Location: ../控制器/登入的方法名")); ????9 10 ???}11 12 }

注意:

构造函数需要与类同名,经过测试发现PHP自带的万能类构造方法__construct()是不能使用的


PHP之ThinkPHP框架(会话)

原文地址:https://www.cnblogs.com/dongxiaodong/p/10269788.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved