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

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

页面跳转:

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

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

超链接:

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

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

JS传递参数:

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

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

GET和POST的数据获取:

 <?php
namespace app\index\controller; use think\Request; class Xiao
{
public function xiao2(){ //获取到访问信息
$re=Request::instance(); echo "当前域名:".$re->domain(); echo "获取 GET 或者 POST 参数值:".$re->param("name");//也可以为input("name");
dump(input());//$也可以为:re->param() 打印所有获取的值 $methodx=$re->method();
echo "当前的请求方法:".$methodx; //获取get数据
if($methodx=="GET"){
echo $re->get("getn")."<br/>";
dump($re->get());
} //获取post数据
if($methodx=="POST"){
echo $re->post("postn")."<br/>";
dump($re->post()); } } }

Session的基本使用:

 <?php
namespace app\index\controller; //导入必要的模块
use think\Session; class Xiao
{
public function xiao2(){
//设置值
Session::set('name1','thinkphp'); //判断session值是否存在
if(Session::has("name1")){
echo "--------------------------";
} //获取某个值
echo Session::get('name1'); //删除某个值
//Session::delete('name1');
//清空所有
Session::clear(); //session数组的设置
Session::set("n2.nn1","aa1");
Session::set("n2.nn2","aa2");
//获取某个值
echo Session::get("n2.nn1");
//打印数组中所有值
dump(Session::get("n2")); } }

Cookie的基本使用:

 <?php
namespace app\index\controller; //导入必要的模块
use think\Cookie; class Xiao
{
public function xiao2(){ //cookie单值,时间单位为秒
Cookie::set('name1','value',3600);
//cookie数组
Cookie::set('name',[1,2,3]);
//判断是否存在
if(Cookie::has("name")){
//打印出数组
dump(Cookie::get("name"));
}
//删除某个
Cookie::delete('name');
//清空所有
Cookie::clear();
} }

利用Session的登入判断:

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

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

先导入必要模块:

 use think\Session;

模板的构造函数编写:

 //构造函数
function 类名(){ //判断session
if(!Session::get("username")){ //非登入,跳转页面
exit(header("Location: ../控制器/登入的方法名")); } }

注意:

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


PHP之ThinkPHP框架(会话)的更多相关文章

  1. 制作类似ThinkPHP框架中的PATHINFO模式功能(二)

    距离上一次发布的<制作类似ThinkPHP框架中的PATHINFO模式功能>(文章地址:http://www.cnblogs.com/phpstudy2015-6/p/6242700.ht ...

  2. 攻城记:Thinkphp框架的项目规划总结和踩坑经验

    一.项目模块规划 1.项目分为PC端.移动端.和PC管理端,分为对应目录为 /Application/Home,/Application/Mobile,/Application/Admin: 对应入口 ...

  3. ThinkPHP框架的一些基础应用

    这是俺滴师傅给俺传授了的知识,特在此分享. TP框架,做PHP开发的都应该有所耳闻.下面,我们就来说说入口文件的生成: 创建新项目时,首先,在目录文件下创建一个新的文件夹.然后将Thinkphp框架文 ...

  4. 关于在BAE上部署ThinkPHP框架的问题

    现在有点小兴奋,因为在在BAE上部署ThinkPHP框架的问题快折腾一天了,午觉都没睡,不过没白整总算有点结果.不扯淡了,直入正题吧. 之前熟悉ThinkPHP框架,想在BAE上用ThinkPHP做点 ...

  5. 番外一:关于thinkphp框架下的文件导入路径问题

    总的来说,要使在thinkphp框架下面HTML导入的图片.css文件和js文件有效,只有两种方法:(1)使用绝对路径:(2)在项目目录下创建新目录Public,把所有的img文件夹.js文件夹和cs ...

  6. 【PHP】基于ThinkPHP框架搭建OAuth2.0服务

    [PHP]基于ThinkPHP框架搭建OAuth2.0服务 http://leyteris.iteye.com/blog/1483403

  7. thinkphp框架下404页面设置

    404页面即系统在找不到请求的操作方法和找不到请求的控制器名称时的一种报错行为的优化. 第一步:在thinkphp框架中的Home/Comtroller中建一个EmptyController.clas ...

  8. [2012-4-10]ThinkPHP框架被爆任意代码执行漏洞(preg_replace)

    昨日(2012.04.09)ThinkPHP框架被爆出了一个php代码任意执行漏洞,黑客只需提交一段特殊的URL就可以在网站上执行恶意代码. ThinkPHP作为国内使用比较广泛的老牌PHP MVC框 ...

  9. ThinkPHP框架的部署

    1.将ThinkPHP框架的框架文件放到想要放置的地方,与创建的应用文件夹同级 2.vhost文件中设置虚拟目录 3.在hosts文件中配置 4.在应用目录中创建入口文件index.php 5.在入口 ...

  10. ThinkPHP框架如何修改X-Powered-By

    以前用ThinkPHP框架开发了一个小网站,前几天查询页面HTTP状态发现,里面有一项: X-Powered-By: ThinkPHP 2.0 这样虽然没什么,但感觉如果别有用心的人查询会知道你是用这 ...

随机推荐

  1. WIN10 安装 ReportBuilder3.msi 提示需要 .NET Framework 4.5

    win+r键调出运行窗口输入regedit打开注册表,找到HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client ...

  2. win10无法访问服务器上的共享文件夹怎么设置,提示:你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问

    此问题需要修改Win10 网络策略 按window+R键输入gpedit.msc 来启动本地组策略编辑器. 依次找到“计算机配置-管理模板-网络-Lanman工作站”这个节点,在右侧内容区可以看到“启 ...

  3. Reveal Cards In Increasing Order LT950

    In a deck of cards, every card has a unique integer.  You can order the deck in any order you want. ...

  4. mongodb内嵌文档的javaapi,增删改查

    数据结构: {"_id" : "000000001",  //Mongodb默认主键 "UID" : "000000001&quo ...

  5. IDEA中通过工具类实现对数据库的增删改查

    package com.hu.dao; import com.hu.entity.Student; import java.util.List;import java.util.Map; public ...

  6. 爸爸在家庭中最应该扮演的角色,是爸爸本爸!zz

    不然呢?还是爸爸应该cosplay什么物种?细想下,爸爸这个角色很多人是不称职的,经常加班或完全不管孩子的隐形人.肆意把脾气撒在孩子身上的炸弹君.动不动就不耐烦的刺猬......孩子经常挂在嘴边的不是 ...

  7. centos7 安装freetype

    1:下载: wget "http://download.savannah.gnu.org/releases/freetype/freetype-2.4.0.tar.bz2" 2:  ...

  8. boost--文件、目录操作

    filesystem库是文件系统操作库,可以使用其中的basic_path类用来操作目录.文件,使用需要包含编译好的system库和filesystem库,我们一般不直接使用basic_path,而是 ...

  9. 中标麒麟(linux)下Qt调用python数据转换

    转自:https://blog.csdn.net/itas109/article/details/78733478 mytest.py文件 # -*- coding: utf-8 -*- def he ...

  10. Exp 8 Web基础

    Exp 8 Web基础 20154305 齐帅 一.实践要求: (1).Web前端HTML 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. ...