控制器

<?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. 解决ARC下performselector-may-cause-a-leak-because-its-selector-is-unknown 警告

    在ARC下使用 [theTarget performSelector:theTarget withObject:Nil]; 会出现警告:performselector-may-cause-a-leak ...

  2. 查看物体A是否被相机B渲染

    using UnityEngine; using System.Collections; public class Test : MonoBehaviour { public GameObject a ...

  3. Android获取手机位置代码实现

    1.项目Src下创建...service包,然后新建GPSService类 package com.zebra.mobilesafe.service; import java.io.IOExcepti ...

  4. Nginx.conf简介

    vim /etc/nginx/nginx.conf #user nobody; worker_processes 1; #error_log logs/error.log; #error_log lo ...

  5. centos6.3下yum安装redis

    我得是centos 6.3,如果直接用yum安装redis,报错,如下: [root@CentOS6 etc]# yum install redis Loaded plugins: fastestmi ...

  6. MFC总结之CListCtrl用法及技巧(一)

    本文根据本人在项目中的应用,来谈谈CListCtrl的部分用法及技巧.当初学习时,查了很多资料,零零碎碎的作了些记录,现在主要是来做个总结,方便以后查阅.主要包括以下十三点内容:基本操作.获取选中行的 ...

  7. Android Studio Share Project On Github

    在Android Studio上将项目导入Github上: 1. 创建一个Project.点击VCS -> Enable Version Control Integration... 2.选择G ...

  8. string.Format字符串格式化说明

    1.格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元) string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0 ...

  9. dango models and database ---- relation ship

    一.django自带的ORM中可以定义表与表之间的对应关系.现比较一下各个不同关系之间数据库端的实现 1.ForeignKey(ManyToOne)关系 from django.db import m ...

  10. OpenCV2马拉松第24圈——轮廓提取

    计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g/article/details/27979267 收入囊中 在图片中找到轮廓而且描绘 ...