登陆功能是PHP程序设计中常见的功能。本文ThinkPHP实例主要完成注册成功后进入首页,并告诉你是登录用户的功能。具体实现步骤如下:

第一步:在config.php文件中加上:

1
'USER_AUTH_KEY'=>'authId'
 
 
 

示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if(!defined('THINK_PATH')) exit();
return array(
// 定义数据库连接信息
'DB_TYPE'=> 'mysql',// 指定数据库是mysql
'DB_HOST'=> 'localhost',
'DB_NAME'=>'myuser', // 数据库名
'DB_USER'=>'root',
'DB_PWD'=>'', //您的数据库连接密码
'DB_PORT'=>'3306',
'DB_PREFIX'=>'think_',//数据表前缀
'USER_AUTH_KEY'=>'authId'
);
?>

第二步:在AdminAction.class.php中的insert()代码中用:

1
Session::set(C('USER_AUTH_KEY'),$user);

保存登录用户名到session。

完整实现代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public function insert()
{
header('Content-Type:text/html; charset=utf-8');//防止出现乱码
$user=$_POST['user'];
$this->verifyCheck();
$Pagemodel = D("user");
$vo = $Pagemodel->create();
if(false === $vo) die($Pagemodel->getError());
$topicid = $Pagemodel->add(); //add方法会返回新添加的记录的主键值
if($topicid)
{
//$_SESSION[C('USER_AUTH_KEY')]=$user;//不能用此句
Session::set(C('USER_AUTH_KEY'),$user);
//dump(Session::get('authId'));
echo "<script>alert('数据库添加成功');location.href='http://127.0.0.1/zhuce/index.php/index';</script>";
}
else throw_exception("<script>alert('数据库添加失败');history.back();</script>");
}

第三步:在IndexAction.class.php文件中用if(!Session::is_set(C('USER_AUTH_KEY')))判断用户登录了没有。
Session::get(C('USER_AUTH_KEY'))是获取登录用户的名。

具体代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public function index()
{
if(!Session::is_set(C('USER_AUTH_KEY')))
//if(!isset($_SESSION['USER_AUTH_KEY'])||($_SESSION['USER_AUTH_KEY']==0))//不能用此句
{
$msg="用户没有登录";
}
else
{
$msg=Session::get(C('USER_AUTH_KEY')).'欢迎你回来';
}
$this->assign('msg',$msg);
$this->display();
}

第四步:首页显示模板,代码如下:

1
2
3
4
<body>
{$msg}<br />
这是我的首页
</body>

小结:

登录代码都是围绕写session,判断session,读session展开。

写session用:Session::set(C('USER_AUTH_KEY'),$user);
判断session用:if(!Session::is_set(C('USER_AUTH_KEY')));
读session用:Session::get(C('USER_AUTH_KEY'))

上述就是ThinkPHP登录功能的实现方法全部内容。

--------------------------------------------------------------------------------------------------Deng

邓_ ThinkPhp框架的更多相关文章

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

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

  2. 使用Thinkphp框架开发移动端接口

     本文给大家分享的是使用thinkphp框架开发移动端接口的2种方法,一种是开发API,另外一种是实现移动端访问自动切换移动主题模板,从而实现伪app访问,下面我们就来详细看下如何实现吧. 方案一:给 ...

  3. ThinkPHP框架视图详细介绍 View 视图--模板(九)

    原文:ThinkPHP框架视图详细介绍 View 视图--模板(九) 视图也是ThinkPHP使用的核心部分: 一.模板的使用 a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和 ...

  4. thinkphp框架的相关总结

    参考链接地址:http://gongwen.sinaapp.com/article-205.html 1. 模板中不能使用的标签 {$content} {$i} 2. If标签 如: <if c ...

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

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

  6. CasPHP 便捷简单的 ThinkPHP 框架

    便捷简单的 PHP 框架,自适应后台管理界面 Convenient and succinct(便捷的 简明的;言简意赅的) 核心框架:framework: 5.1.28助手函数:think-helpe ...

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

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

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

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

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

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

随机推荐

  1. Java贪吃蛇感想

    暑假敲代码的效率真的不高呀,一个这种小游戏从最开始构思到最后实施代码,从最开始的Demo版本到最后的第四版本,花了一个星期了.本想再更新一个版本,加入双人对战模式,还想写个AI版,可是我估计按照现在我 ...

  2. JS 监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法

    在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面或执行一些其它操作的需求: 那在代码中怎样监听当点击微信.支付宝.百度糯米.百度钱包 ...

  3. yield next和yield* next的区别

    yield next和yield* next之间到底有什么区别?为什么需要yield* next?经常会有人提出这个问题.虽然我们在代码中会尽量避免使用yield* next以减少新用户的疑惑,但还是 ...

  4. kotlin学习-初次见面

    第一次相识 最近看了很多介绍kotlin的文章.怀着好奇心改造了之前用java写的一个工具jar包.功能不是很复杂,类也只有几个,却足足写3个小时.期间一边看教程,一边写,有一种找回原来第一次写代码的 ...

  5. centos7下固定IP(静态IP)网络配置

    关于centos下网络配置(这里使用静态IP方法) 动态ip网络配置可参考我的另一篇博文http://www.cnblogs.com/albertrui/p/7811868.html 1.编辑/etc ...

  6. while循环写3次用户名密码验证程序

    #变量来自原始用户名和密码 username = 'admin' password = 'nimda' #变量来自计数器 count = 0 #循环条件计数器小于3,则执行while代码块 while ...

  7. Android的Environment.getExternalStorageState的使用

    1.sd状态 sd状态 现象描述  /mnt/sdcard目录是否存在 canRead返回 canWrite返回 MEDIA_MOUNTED  SD卡正常挂载 true true true MEDIA ...

  8. HttpClient 模拟发送Post和Get请求 并用fastjson对返回json字符串数据解析,和HttpClient一些参数方法的deprecated(弃用)的综合总结

    最近在做一个接口调用的时候用到Apache的httpclient时候,发现引入最新版本4.5,DefaultHttpClient等老版本常用的类已经过时了,不推荐使用了:去官网看了一下在4.3之后就抛 ...

  9. Python3——让我们像孩子一样的去看书

    用tkinter来画高级图形 让我们一起创造一个按钮吧!"按住我:0  :" 那我们先做一个小例子,让我们第一眼先认识到这个它(tkinter)吧! 输入以下代码: from tk ...

  10. github免密登陆

    import requests import re # 一:先获取登陆页面,拿到authenticity_token: # 1 请求的url:https://github.com/login # 2 ...