php使用 _before_index() 来实现访问页面前,判断登录
C:\wamp\www\DEVOPS\Home\Lib\Action: <?php
class IndexAction extends Action {
function index(){
$this->display();
} function do_login(){
//获取用户名和密码信息,和数据库中比对
echo 111111111;
dump($_POST);
dump($_SESSION);
echo 222222222;
$username=$_POST['username'];
$password=$_POST['password'];
$code=$_POST['code'];
#$this->display();
if($_SESSION['verify']!==md5($code)){
$this->error('验证码错误');
} $m=new Model('user');
$where['username']=$username;
$where['password']=md5($password); $arr = $m->where($where)->find(); $i=$m->where($where)->count(); if ($i>0){
$_SESSION['username']=$username;
$_SESSION['authority'] = $arr['authority'];
#$this->redirect('Main/index');
}else{
$this->error('该用户不存在');
}
} function checkUser(){
$username=$_POST['username'];
$m=new Model('user');
$where['username']=$username;
$i=$m->where($where)->count();
if ($i>0){
echo "1";
}else{
echo "0";
}
} function checkPasswd(){
$username=$_POST['username'];
$password=$_POST['password']; $m=new Model('user');
$where['username']=$username;
$where['password']=md5($password);
$i=$m->where($where)->count();
if ($i>0){
echo "1";
}else{
echo "0";
}
} function checkCode(){
$code=$_POST['code'];
if($_SESSION['verify']!==md5($code)){
echo "0";
}else{
echo "1";
}
}
}
?> Index模块下的index方法,调用前台模板 <html>
<head>
<title>Index</title>
<link rel='stylesheet' type='text/css' href='__PUBLIC__/Css/Index/index.css'/>
</head>
<body>
<h1>中均运维管理平台</h1>
<!--图片标签-->
<img class="img_bk" src="__PUBLIC__/Images/scan.jpg"/>
<!--表单提交-->
<form action='__URL__/do_login' method='post' name="myForm">
<table cellspacing="0" cellpadding="0">
<tr>
<td class="td1">用户名:</td>
<td><input type="text" name="username"/></td>
<td class="td3"></td>
<td class="td4"></td>
<tr/>
<tr>
<td class="td1">密码:</td>
<td><input type="password" name="password"/></td>
<td class="td3"></td>
<td class="td4"></td>
<tr/>
<tr>
<td class="td1">验证码:</td>
<td> <input type='text' name='code' /></td>
<td class="td3"><img src="__APP__/Public/code" onclick='this.src=this.src+"?"+Math.random()'/></td>
<td class="td4"></td>
</tr>
<tr>
<td class="td1"></td>
<td><input type="button" value="" name="imgLogin"/></td>
<td class="td3"></td>
<td class="td4"></td>
</tr>
</table>
</form>
</body>
<script type="text/javascript" src="__PUBLIC__/Js/jquery-2.2.2.min.js"></script>
<script src="__PUBLIC__/Js/Index/index.js"></script>
<script src="__PUBLIC__/Js/Public/ajax.js"></script>
</html> 前台模板调用_URL__/do_login 等价于/DEVOPS/index.php/Index/do_login <form action="/DEVOPS/index.php/Index/do_login" method="post" name="myForm"> 那么怎么判断菜单访问页面前,判断登录呢? http://localhost/DEVOPS/index.php/Test/index 测试 此时可以直接访问: <?php
class TestAction extends Action{
// function _before_index(){
// if(!isset($_SESSION['username']) || $_SESSION['username']=='')
// {
// $this->redirect('Index/index');
// }
// } public function index(){
$this->display();
}
}; 此时跳过登录检查,那么怎么判断登录呢? //********************************* 前置和后置操作上一页下一页系统会检测当前操作是否具有前置和后置操作,如果存在就会按照顺序执行,前置和后置操作的方法名是在要执行的方法前面加 _before_和_after_,例如:
class CityAction extends Action{
//前置操作方法
public function _before_index(){
echo 'before<br/>';
}
public function index(){
echo 'index<br/>';
}
//后置操作方法
public function _after_index(){
echo 'after<br/>';
}
}
如果我们访问
http://serverName/index.php/City/index
结果会输出 before
index
after <?php
class TestAction extends Action{
function _before_index(){
if(!isset($_SESSION['username']) || $_SESSION['username']=='')
{
$this->redirect('Index/index');
}
} public function index(){
$this->display();
}
}; 此时会跳转到登录页 /*********** 打印信息: <?php
class TestAction extends Action{
function _before_index(){
var_dump($_SESSION);
#echo $_SESSION;
if(!isset($_SESSION['username']) || $_SESSION['username']=='')
{
#$this->redirect('Index/index');
}
} public function index(){
$this->display();
}
}; 此时访问http://localhost/DEVOPS/index.php/Test/index: array (size=1)
'verify' => string '8289889263db4a40463e3f358bb7c7a1' (length=32) test 20160707 scan! 可以看到 $_SESSION['username'] 为空 如果登录的话SESSION里的信息为: array (size=3)
'verify' => string '198dd5fb9c43b2d29a548f8c77e85cf9' (length=32)
'username' => string 'admin' (length=5)
'authority' => string '1' (length=1)
php使用 _before_index() 来实现访问页面前,判断登录的更多相关文章
- php 用户访问菜单页面,必须登录,判断用户是否登录
<pre name="code" class="python"># 本节课大纲: 一.空模块和空操作 1.空操作 function _empty($ ...
- 前段时间,接手一个项目使用的是原始的jdbc作为数据库的访问,发布到服务器上在运行了一段时间之后总是会出现无法访问的情况,登录到服务器,查看tomcat日志发现总是报如下的错误。 Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected est
前段时间,接手一个项目使用的是原始的jdbc作为数据库的访问,发布到服务器上在运行了一段时间之后总是会出现无法访问的情况,登录到服务器,查看tomcat日志发现总是报如下的错误. Caused by: ...
- Ant Design Pro项目打开页设为登录或者其他页面
Ant Design Pro项目打开页设为登录或者其他页面 一.打开页设为登录页 首先找到utils包中的authority文件,在该文件中找到如下代码: export function getAut ...
- 不同项目同一浏览器访问 导致Session覆盖 登录后点击就退出登录问题
产生原因:最近开发项目两个项目部署采用同一个tomcat 部署 (当两个tomcat部署时也会产生)由于部署时候两个项目访问域名相同 localhost:8080/ localhost:8 ...
- 用curl访问HTTPS站点并登录
开发网站,少不了测试.现在的网站为了加强安全性,都启用了HTTPS协议.所谓HTTPS,也就是HTTP文本在SSL协议中传输.用curl命令行来测试HTTPS站点是个很有用的功能,写点脚本,就可以做功 ...
- 禁止ajax访问shiro管理的登录页面
在使用shiro的时候,对于用户权限的管理,相信很多人都已经很熟悉了.今天,我这里简单的记录一下我自己调试过程中遇到的问题.主要是登录的操作,禁止通过ajax的方式进行访问. shiro中,登录过程拒 ...
- Android检查设备是否可以访问互联网,判断Internet连接,测试网络请求,解析域名
安卓SDK提供了ConnectivityManager类,那么我们就可以轻松的获取设备的网络状态以及联网方式等信息. 但是要想知道安卓设备连接的网络能不能访问到Internet,就要费一番周折了. 本 ...
- 【Loadrunner】通过loadrunner录制时候有事件但是白页无法出来登录页怎么办?
loadrunner录制脚本时候有事件但是一直白页怎么办? 解决办法:依次进行下方1.2.方法操作,如果还不行再进行3的操作. 1.勾选下图IE浏览器的Internet选项中“启用第三方浏览器拓展*” ...
- 用curl访问HTTPS站点并登录(对HTTP返回的结果特别清楚)
开发网站,少不了测试.现在的网站为了加强安全性,都启用了HTTPS协议.所谓HTTPS,也就是HTTP文本在SSL协议中传输.用curl命令行来测试HTTPS站点是个很有用的功能,写点脚本,就可以做功 ...
随机推荐
- 【IE】trim()方法失效
今天用了$.ajax异步提交,结果在ie8里面报错了,说不支持此对象,找了半天没找到什么问题. 后来发现是我data里面的参数传递,里面有个参数用到了trim()方法,这个方法在ie8里面是失效的. ...
- 我的Python成长之路---GitHub使用克隆GitHub(SSH key配置)
六.克隆GitHub仓库 1.创建仓库目录,目录位置没有要求,比如D:\learngit. 2.配置ssh(如果不配置会每次都输入用户名和密码) 使用TortoiseGit生成ssh-key:开始菜单 ...
- ZOJ 2856 Happy Life 暴力求解
因为是Special Judge 的题目,只要输出正确答案即可,不唯一 暴力力求解, 只要每次改变 happiness 值为负的人的符号即可. 如果计算出当前人的 happiness 值为负,那么将其 ...
- FreePascal的VMT与Delphi不一致,没有负方向
因为不需要与C++兼容嘛:http://www.freepascal.org/docs-html/prog/progsu168.html 如果要想取得它真正的VMT,可以Pointer强行转换+100 ...
- Oracle Dedicated server 和 Shared server(专用模式 和 共享模式) 说明(转)
一. 官网说明 在DBCA 建库的时候,有提示让我们选择连接类型,这里有两种类型:专用服务器模式和共享服务器模式.默认使用专用模式.如下图: Oracle 官方文档对这两种文档的说明如下: Abou ...
- spider-web 是爬虫的网页版,使用xml配置
spider-web 是爬虫的网页版,使用xml配置,支持大部分页面的爬取,支持爬取内容的保存.下载等. 其中配置文件格式为: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 ...
- 基于visual Studio2013解决算法导论之053图的邻接表表示
题目 图的邻接表表示 解决代码及点评 // 图的邻接表表示.cpp : 定义控制台应用程序的入口点. // #include <iostream> #include <sta ...
- 0-1背包的动态规划算法,部分背包的贪心算法和DP算法------算法导论
一.问题描述 0-1背包问题,部分背包问题.分别实现0-1背包的DP算法,部分背包的贪心算法和DP算法. 二.算法原理 (1)0-1背包的DP算法 0-1背包问题:有n件物品和一个容量为W的背包.第i ...
- Kafka介绍
本文介绍LinkedIn开源的Kafka,久仰大名了,依照其官方文档做些翻译和二次创作.相应能够查看整份官方文档. 基本术语 topics,维护的消息源种类(更像是业务上的数据种类/分类) produ ...
- C# ignoring letter case for if statement(Stackoverflow)
Question: I have this if statement: if (input == 'day') Console.Write({0}, dayData); When the user t ...