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站点是个很有用的功能,写点脚本,就可以做功 ...
随机推荐
- Android Touch事件传递机制具体解释 上
尊重原创:http://blog.csdn.net/yuanzeyao/article/details/37961997 近期总是遇到关于Android Touch事件的问题,如:滑动冲突的问题,曾经 ...
- Aqua Data Studio 查询结果中文乱码
菜单条里[文件]-[选项]会弹出个选项对话框 然后选[一般] 在右边的[外观]以下找到[网格结果字体] 将字体类型改成宋体即可了 watermark/2/text/aHR0cDovL2Jsb2cuY ...
- ViewPager,使用Fragment实现
效果如图: 使用Fragment实现tab的缺点就是不能够滑动.不过应该也算优点,具体场景可以自由选择. 完整代码:imooc-tab022fragment,在我的百度云网盘上. MainAcgtiv ...
- PHP学习笔记4-类/命名空间/成员方法/类方法
命名空间 namespace 类 class创建文件Hello.php,namespace是jikexueyuan: <?php /** * Created by PhpStorm. * U ...
- POJ 1830 【高斯消元第一题】
首先...使用abs()等数学函数的时候,浮点数用#include<cmath>,其它用#include<cstdlib>. 概念: [矩阵的秩] 在线性代数中,一个矩阵A的列 ...
- line
小君童靴说头儿给了他一个project,实现给出屏幕上任意两个点,求出这两个点之间直线上的所有的点.觉得这个很好玩,就自己也写了一点code /* date : 2014/10/21 version ...
- Cognos 图表用图片取代”没有数据显示”
在Cognos中做出来报表展示的时候因为没有数据感觉显示“没有可用数据”感觉很不美观.所以想用一张图片代替. 在图表的属性里面有一个“无数据内容”,点击打开之后有三个选项: 默认就是显示“没有可用数据 ...
- [置顶] Android4.x对长按电源键(挂断键)和短按电源键(挂断键)的详细处理流程
1. 简介 Android4.x在Framework的PhoneWindowManager对Power(KeyEvent.KEYCODE_POWER)和Home(KeyEvent.KEYCODE_HO ...
- linux c coding style
Linux kernel coding style This is a short document describing the preferred coding style for the lin ...
- 利用JNI技术在Android中调用C++形式的OpenGL ES 2.0函数
1. 打开Eclipse,File-->New-->Project…-->Android-->AndroidApplication Projec ...