控制器

<?php
// 本类由系统自动生成,仅供测试用途
class IndexAction extends Action {
public function index(){ $this->display(); }
}

images放入public里

模板/index/里 images全部替换为__PUBLIC__/images

生成验证码函数

public function verify(){
import('ORG.Util.Image');
Image::buildImageVerify(4,5,'png',80,25); }

测试http://localhost/myapp/admin.php/Index/verify

模板中验证码的获取方法<img src={:U(verify)} id="valiCode"  onclick="document.getElementById('valiCode').src='{:U(verify)}'"/>

后台模板完成

验证原理检测,模板里改

<form action="{:U('login','','')}" method="POST">

控制器写入方法

public function login(){ dump($_POST); }

如果dump得到的值为空,可能是input里没有定义name赋值

后台登陆代码

<?php
// 本类由系统自动生成,仅供测试用途
class IndexAction extends Action {
public function index(){ $this->display(); }
public function login(){
if(!IS_POST) halt('页面不存在');//假如不是页面上提交的,而是直接输入的post地址
if (I('yzm','','md5') != session('verify')){//假如post验证码不等于session验证码
$this->error('验证码错误'); }
$username = I('username');//post到的username
$pwd = I('password','','md5');
$user = M('user')->where(array('username'=>$username))->find();//select $username where from user
//dump($user);
if (!$user || $user['password'] != $pwd ) {//假如$user不为真,或者post密码不等于数据库密码
$this->error('账号或密码错误!');
} dump($user);
$data = array(
'id'=>$user['id'],
'logintimes'=>time(),
'loginip'=>get_client_ip(),
);
dump($data); M('user')->save($data);
session('uid',$user['id']);
session('username',$user['username']);
session('logintimes',date('Y-m-d H:i:s',$user['logintimes']));
session('loginip',$user['loginip']);
$this->redirect('admin'); } public function admin(){
echo hahahaha; } public function verify(){
import('ORG.Util.Image');//引进验证码图片
Image::buildImageVerify(4,1,'png');//数量4个,数字型,png后缀 } }

直接输入http://localhost/myapp/admin.php/Index/admin.html的话就直接到后台了,绕过了验证

自动运行控制器,检测是否存在SESSION,防止通过输入后台地址直接进入后台,后台的功能都要继承它

<?php
Class CommonAction extends Action {
Public function _initialize(){//自动运行函数
if(!isset($_SESSION['uid']) || !isset($_SESSION['username'])){//假如SESSION没有被写入,即本地不存在cookie
$this->redirect('Index/index');//跳转
} } } ?>

后台登陆功能的实现 SESSION的更多相关文章

  1. 如何实现免登陆功能(cookie session?)

    Cookie的机制 Cookie是浏览器(User Agent)访问一些网站后,这些网站存放在客户端的一组数据,用于使网站等跟踪用户,实现用户自定义功能. Cookie的Domain和Path属性标识 ...

  2. 从零开始编写自己的C#框架(15)——Web层后端登陆功能

    对于一个后端管理系统,最重要内容之一的就是登陆页了,无论是安全验证.用户在线记录.相关日志记录.单用户或多用户使用帐号控制等,都是在这个页面进行处理的. 1.在解决方案中创建一个Web项目,并将它设置 ...

  3. Dedecms织梦后台登陆验证码不显示几种解决方法

    Dedecms织梦后台登陆验证码不显示几种解决方法,服务器所造成的验证码不显示问题看这里: 方法一:查看服务器的php版本是否与程序版本兼容(织梦程序PHP版本查看方法:打开www.96net.com ...

  4. SpringSceurity(5)---短信验证码登陆功能

    SpringSceurity(5)---短信验证码登陆功能 有关SpringSceurity系列之前有写文章 1.SpringSecurity(1)---认证+授权代码实现 2.SpringSecur ...

  5. [.NET领域驱动设计实战系列]专题七:DDD实践案例:引入事件驱动与中间件机制来实现后台管理功能

    一.引言 在当前的电子商务平台中,用户下完订单之后,然后店家会在后台看到客户下的订单,然后店家可以对客户的订单进行发货操作.此时客户会在自己的订单状态看到店家已经发货.从上面的业务逻辑可以看出,当用户 ...

  6. DDD实践案例:引入事件驱动与中间件机制来实现后台管理功能

    DDD实践案例:引入事件驱动与中间件机制来实现后台管理功能 一.引言 在当前的电子商务平台中,用户下完订单之后,然后店家会在后台看到客户下的订单,然后店家可以对客户的订单进行发货操作.此时客户会在自己 ...

  7. JAVAEE——struts2_04:自定义拦截器、struts2标签、登陆功能和校验登陆拦截器的实现

    一.自定义拦截器 1.架构 2.拦截器创建 //拦截器:第一种创建方式 //拦截器生命周期:随项目的启动而创建,随项目关闭而销毁 public class MyInterceptor implemen ...

  8. [nodejs] nodejs开发个人博客(七)后台登陆

    定义后台路径 访问这个路径进入后台页面 http://localhost:8888/admin/login 在后台路由控制器里面(/admin/index.js)调用登陆控制器(/admin/logi ...

  9. ECshop后台新功能权限添加

    ecshop后台新功能权限的添加 1.在后台“推荐管理”里添加“推荐人分成”.“会员分成”两个操作功能以及权限 index.php?act=menu incluedes/inc_priv.php:权限 ...

随机推荐

  1. PHP RESTful

    PHP RESTful REST(英文:Representational State Transfer,简称REST) ,指的是一组架构约束条件和原则. 符合REST设计风格的Web API称为RES ...

  2. HTML5 本地存储形式

    1.sessionStorage 2.localStorage 3.Database Storage 4.globalStorage 5.兼容性 参考文献 本地持久化存储一直是本地客户端程序优于 we ...

  3. PHP LDAP class for Active Directory

    A class for PHP to talk to Active Directory through LDAP.http://sourceforge.net/projects/adldap/

  4. 转:sock_ev——linux平台socket事件框架(event loop) .

    上一篇我们封装了三种事件监听方式,如果分别提供给客户端使用,有点不方便,也不利于统一管理:我们再封装一层EventLoop. /************************************ ...

  5. 简单hello world

    第一步配置路由: 打开app/http/route.php文件,输入:Route::get('/home', 'HomeController@index'); 第二步配置控制器: 控制文件可以手动添加 ...

  6. mysql的rand函数

    项目中需要动态随机生成一些固定位数的随机数,如8位,5位等. 之前看到的写法是这样 ROUND(ROUND(RAND(),5)*100000) 这样写不太准确,有几率出现4位的情况,Rand() 函数 ...

  7. EF Code First:使用T4模板生成相似代码

    http://developer.51cto.com/art/201309/409948.htm

  8. 微信公共服务平台开发(.Net 的实现)1-------认证“成为开发者”

    这些代码也就开始认证的时候用一次,以后就不用了: const string Token = "XXXXX";//你的token protected void Page_Load(o ...

  9. Android成长之路-实现简单动画

    实现简单动画: 在drawable目录中放入图片, 并且创建xml文件 frame.xml 存入图片,如下: <pre class="html" name="cod ...

  10. suid/guid用法 suid/guid详细解析

    suid/guid 我们在前面曾经提到过s u i d和g u i d.这种权限位近年来成为一个棘手的问题.很多系统供应商不允许实现这一位,或者即使它被置位,也完全忽略它的存在,因为它会带来安全性风险 ...