后台登陆功能的实现 SESSION

控制器

<?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‘);//跳转
}

}

}

?>
时间: 2024-09-30 17:37:55

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

教你用Java安全有效的实现两星期内自动登陆功能-Session

现在很多网站都有为用户保存登陆信息(即保存Cookie)的功能,当用户下一次进入网站时,可以帮助用户自动登陆,使网站显得更加友好.笔者通过研究ACEGI项目的自动登陆源码,编写了一个安全有效的实现两星期自动登陆功能的JAVA工具类,.下面是具体的实现流程和实现代码. 先说一下流程: 1.保存用户信息阶段: 当用户登陆网站时,在登陆页面填写完用户名和密码后,如果用户在提交时还选择了"两星期内自动登陆"复选框,那么在后台程序中验证用户名和密码全都正确后,还要为用户保存这些信息,以便用户下一

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

对于一个后端管理系统,最重要内容之一的就是登陆页了,无论是安全验证.用户在线记录.相关日志记录.单用户或多用户使用帐号控制等,都是在这个页面进行处理的. 1.在解决方案中创建一个Web项目,并将它设置为启动项 2.添加引用 3.添加WebManage文件夹与Login.aspx文件 4.添加登陆页面HTML代码 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx

完成登陆功能

效果展示: 登陆功能讲解: 在sql表中,last_lock_time表示上次锁定的时间    当用户在界面输入密码错误时,其login_fail_count次数就会加1 当次数到达3的时候 则会锁定该用户 提示用户5分钟后再登陆,当用户登陆成功的时候 就会将其login_fail_count设为0次. 前台通过获取页面输入的用户名和密码  然后通过ajax传给后台 进行判断  后用后台判断后返回一些信息给前台 1.controller层(其中有些输出语句只是为了方便测试) 2.jsp页面 ps

Servlet实现简单的登陆功能(带验证码)

"纸上得来终觉浅",动手比看书印象更深,学到的更多.下面用Servlet实现简单的登陆功能,来巩固对Servlet的学习. 1.在WEB-INF下新建一个名为index.html作为登陆界面. index.html代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title>

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

DDD实践案例:引入事件驱动与中间件机制来实现后台管理功能 一.引言 在当前的电子商务平台中,用户下完订单之后,然后店家会在后台看到客户下的订单,然后店家可以对客户的订单进行发货操作.此时客户会在自己的订单状态看到店家已经发货.从上面的业务逻辑可以看出,当用户下完订单之后,店家或管理员可以对客户订单进行跟踪和操作.上一专题我们已经实现创建订单的功能,则接下来自然就是后台管理功能的实现了.所以在这一专题中将详细介绍如何在网上书店案例中实现后台管理功能. 二.后台管理中的权限管理的实现 后台管理中,

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

一.自定义拦截器 1.架构 2.拦截器创建 //拦截器:第一种创建方式 //拦截器生命周期:随项目的启动而创建,随项目关闭而销毁 public class MyInterceptor implements Interceptor{} //创建方式2: 继承AbstractInterceptor -> struts2的体贴 //帮我们空实现了init 和 destory方法. 我们如果不需要实现这两个方法,就可以只实现intercept方法 public class MyInterceptor2

WebLogic Server的单点登陆功能--转载

在WebLogic 8.1最新的 SP4版本中,最引人注目的要算是在安全方面,提供了用于和Microsoft Windows客户端进行Single Sign-On的Single Pass Negotiate Identity Assertion Provider.通过该Provider可以轻松完成从前认为技术难度很高的和Windows客户端的Single Sign-On. 这个简单,低成本的SSO解决方案相信对大多数的企业应用来说更具吸引力: 用户只需要开机时登录Windows域,就可以以登录用

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

一.引言 在当前的电子商务平台中,用户下完订单之后,然后店家会在后台看到客户下的订单,然后店家可以对客户的订单进行发货操作.此时客户会在自己的订单状态看到店家已经发货.从上面的业务逻辑可以看出,当用户下完订单之后,店家或管理员可以对客户订单进行跟踪和操作.上一专题我们已经实现创建订单的功能,则接下来自然就是后台管理功能的实现了.所以在这一专题中将详细介绍如何在网上书店案例中实现后台管理功能. 二.后台管理中的权限管理的实现 后台管理中,首先需要实现的自然就是权限管理了,因为要进行商品管理等操作的

servlet 3.0无需配置web.xml,使用注入方式配置servlet实现登陆功能(服务器需要支持servlet3.0)

首先申明上面的报错红叉,我也不知道怎么回事.总之能运行. 新建项目时选择java EE6.0,低版本没有servlet3.0. 先看一个基本示例. Test.java是用来测试无需配置文件,无需静态页面(jsp,html) 直接访问servlet来从服务器上获取信息. Test.java代码 1 package com.gys; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.servl