PHP之ThinkPHP框架(会话)
网页会话即是实现页面跳转及数据传递,在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框架(会话)的更多相关文章
- 制作类似ThinkPHP框架中的PATHINFO模式功能(二)
距离上一次发布的<制作类似ThinkPHP框架中的PATHINFO模式功能>(文章地址:http://www.cnblogs.com/phpstudy2015-6/p/6242700.ht ...
- 攻城记:Thinkphp框架的项目规划总结和踩坑经验
一.项目模块规划 1.项目分为PC端.移动端.和PC管理端,分为对应目录为 /Application/Home,/Application/Mobile,/Application/Admin: 对应入口 ...
- ThinkPHP框架的一些基础应用
这是俺滴师傅给俺传授了的知识,特在此分享. TP框架,做PHP开发的都应该有所耳闻.下面,我们就来说说入口文件的生成: 创建新项目时,首先,在目录文件下创建一个新的文件夹.然后将Thinkphp框架文 ...
- 关于在BAE上部署ThinkPHP框架的问题
现在有点小兴奋,因为在在BAE上部署ThinkPHP框架的问题快折腾一天了,午觉都没睡,不过没白整总算有点结果.不扯淡了,直入正题吧. 之前熟悉ThinkPHP框架,想在BAE上用ThinkPHP做点 ...
- 番外一:关于thinkphp框架下的文件导入路径问题
总的来说,要使在thinkphp框架下面HTML导入的图片.css文件和js文件有效,只有两种方法:(1)使用绝对路径:(2)在项目目录下创建新目录Public,把所有的img文件夹.js文件夹和cs ...
- 【PHP】基于ThinkPHP框架搭建OAuth2.0服务
[PHP]基于ThinkPHP框架搭建OAuth2.0服务 http://leyteris.iteye.com/blog/1483403
- thinkphp框架下404页面设置
404页面即系统在找不到请求的操作方法和找不到请求的控制器名称时的一种报错行为的优化. 第一步:在thinkphp框架中的Home/Comtroller中建一个EmptyController.clas ...
- [2012-4-10]ThinkPHP框架被爆任意代码执行漏洞(preg_replace)
昨日(2012.04.09)ThinkPHP框架被爆出了一个php代码任意执行漏洞,黑客只需提交一段特殊的URL就可以在网站上执行恶意代码. ThinkPHP作为国内使用比较广泛的老牌PHP MVC框 ...
- ThinkPHP框架的部署
1.将ThinkPHP框架的框架文件放到想要放置的地方,与创建的应用文件夹同级 2.vhost文件中设置虚拟目录 3.在hosts文件中配置 4.在应用目录中创建入口文件index.php 5.在入口 ...
- ThinkPHP框架如何修改X-Powered-By
以前用ThinkPHP框架开发了一个小网站,前几天查询页面HTTP状态发现,里面有一项: X-Powered-By: ThinkPHP 2.0 这样虽然没什么,但感觉如果别有用心的人查询会知道你是用这 ...
随机推荐
- if(变量)的判断
变量如果不为0,null,undefined,false,都会被处理为true.只要变量有非0的值或是某个对象,数组,字符串,都会认为true
- Spring事务,Bean生命周期
一.事务相关: 1.Spring事务基于Spring AOP切面编程: 2.AOP基于代理模式,得到需要开启事务的代码的代理对象: 3.而没有开启事务的Service方法里调用了开启事务 @Trans ...
- 安装jdk1.8导致eclipse显示问题
安装jdk1.8后新建workspace(mars)后eclipse的toolbar和主题显示有问题 例如: 修改步骤 1.设置主题window->Preferences->General ...
- vue项目部署到服务器
1.配置config目录下index.js index: path.resolve(__dirname, '../dist/index.html'), assetsRoot: path.resolve ...
- IDEA 错误: 找不到符号
在IDEA添加了一个新的Mapper.xml文件,然后删除,重新编译该文件所在的模块时,提示我编写的类找不到符合. 解决方法:右键.java文件,选择“complile ....”(ctrl+shif ...
- python networkx:绘制网络图
1.简单使用 import networkx as nx import matplotlib.pyplot as plt G = nx.Graph() G.add_edge(1,2) nx.draw_ ...
- S系统的不好的实践
多个项目 多个分支放在一个SVN里边维护,导致多股力量并行开发时候的代码覆盖的风险可能性很大,, 好的实践是维护独立的SVN,彼此分离开来
- java的OSGi确实是个坑
sun已经把java的OSGi这个坑填得够深了,sun估计短时间想把这个坑调回来是不可能了,跟.net比包管理模块化开发确实java够烂的. java的模块化架构开发只能让OSGi回去睡觉,自定义模块 ...
- 给div"上"滑动条
最近做项目时修改一个遗留的bug,大概是这样:有一个聊天窗口,用户聊天内容展现在窗口上.其实这个窗口是一个带滑动条的div,随着聊天内容的添加,滑动条也越来越长了,这不是重点,重点是每次刷新窗口时候, ...
- MySQL数据库(二)-数据库的增删改查
简介: 以下是MySQL最基本的增删改查语句.在进行“增删改查”的操作之前,先建立一个包含数据表student的数据库,新建表grade(具体操作可以见上一篇). 一."增"-添加数据 1.1 为表中 ...