首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组异常中的PHP

数组异常中的PHP
EN

Stack Overflow用户
提问于 2013-11-15 22:58:15
回答 2查看 162关注 0票数 1

我在php中的in_array函数有一些问题,我有一个需要$key变量的重置函数,我面临的是,如果uri_string是admin/user/ reset,in_array是不接受的,而且我被重定向到登录页面,但是如果我修改下面的代码来精确密码重置键,比如admin/user/ reset /PasswordResetKey,它不会像你所猜测的那样重定向。

正如我从php手册中看到的,该字符串不足以包含uri_string中的重置,否则我就错了吗?

代码语言:javascript
复制
$exceptions = array('admin/user/login', 'admin/user/forgot', 'admin/user/logout', 'admin/user/reset');
if(in_array(uri_string(),$exceptions) == FALSE){
if($this->user_m->loggedin() == FALSE){
  redirect('admin/user/login');
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-16 01:47:18

您可以通过分解 uri_string变量来创建一个片段数组,然后通过第三个段进行in_array检查。那么您的异常就可以是array('login', 'logout', 'reset', 'forgot');

代码语言:javascript
复制
$exceptions = array('login', 'forgot', 'logout', 'reset');
uri = explode('/', uri_string());
if(in_array(uri[2],$exceptions) == FALSE){
if($this->user_m->loggedin() == FALSE){
  redirect('admin/user/login');
}
票数 0
EN

Stack Overflow用户

发布于 2013-11-15 23:03:59

in_array将传入的文本值与匹配数组中的文本值进行比较,它不会执行部分字符串。你能做的就是:

代码语言:javascript
复制
$exceptions = array('admin/user/login', 'admin/user/forgot', 'admin/user/logout', 'admin/user/reset');
foreach($exceptions as $exception) {
    if(strpos(uri_string(), $exception === false) {
        if($this->user_m->loggedin() == FALSE){
            redirect('admin/user/login');
        }
    }
}
// no exceptions caught if you get to here

您可能希望使用stripos (不区分大小写):http://www.php.net/manual/en/function.stripos.php

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20012110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档