zoukankan      html  css  js  c++  java
  • 简单管理员权限与几个常用的PHP 常用函数,in_array(),explode(),implode(),join(),str_replace()

    先把今天要用的几个函数罗列出来:

    //explode()转换成数组,implode()转化成字符串

    explode("分隔符",需要被分割的字符串或变量)

    $priv="product,index";

    explode(",",$priv);

    //判断一个字符串是否存在于一个数组中

    in_array(被判断的,数组)

    $now_page="index";

    in_array($now_page,$priv);

    //将数组用分隔符分成字符串

    join("分隔符",数组)

    join() 函数是 implode() 函数的别名。

    //字符串替换

    str_replace(find,replace,string,count)

    count是可选的一个变量,对替换数进行计数。

    该函数对大小写敏感。请使用 str_ireplace() 执行对大小写不敏感的搜索。

    $priv="product,index";

    str_replace("product","apple",$priv)

    //输出"apple,index"

    <?php
    $arr = array("blue","red","green","yellow");
    print_r(str_replace("red","pink",$arr,$i));
    echo "Replacements: $i";
    ?>

    输出:

    Array
    (
    [0] => blue
    [1] => pink
    [2] => green
    [3] => yellow
    )
    Replacements: 1
    <?php
    $find = array("Hello","world");
    $replace = array("B");
    $arr = array("Hello","world","!");
    print_r(str_replace($find,$replace,$arr));
    ?>

    输出:

    Array
    (
    [0] => B
    [1] =>
    [2] => !
    )

    //string position  字符位置

    strpos(字符串,要找的)

    return 1.找得到返回字符位置,2.找不到,返回false

    $priv = "apple,index";
    $i = strpos($priv,"ex");
    var_dump($i);    //输出9

     //file_put_contents() 函数把一个字符串写入文件中。

    与依次调用 fopen(),fwrite() 以及 fclose() 功能一样。

    file_put_contents(file,data,mode,context)
    参数描述
    file 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
    data 可选。规定要写入文件的数据。可以是字符串、数组或数据流。
    mode

    可选。规定如何打开/写入文件。可能的值:

    • FILE_USE_INCLUDE_PATH
    • FILE_APPEND
    • LOCK_EX
    context

    可选。规定文件句柄的环境。

    context 是一套可以修改流的行为的选项。若使用 null,则忽略。

    //file_get_contents(文件名)

    file_get_contents() 函数把整个文件读入一个字符串中。

    PHP中file() 函数和file_get_contents() 函数的作用都是将整个文件读入某个介质,其主要区别就在于这个介质的不同。

    file() 函数是把整个文件读入一个数组中,然后将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败,则返回 false。

    file_get_contents() 函数是把整个文件读入一个字符串中。和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。

    把文本文件a.txt的内容保存到一个数据下面是a.txt的内容如下.

    aaaaaa

    bbbbbb

    bbbbccc

    好了,就这三行,现在看file_get_contents的操作方法.

    $content = file_get_content('a,txt');

    $temp =str_replace(chr(13),'|',$content);
       
        $arr =explode('|',$temp);

    也不多只有三行就完成了,那么我们来看看file函数吧.

    $content = file('a.txt');

    就完成了,效果与上面完全相同的.

    //file_exists(文件名)  判断文件是否存在

    //end() 函数将数组内部指针指向最后一个元素,并返回该元素的值(如果成功)。

    以上基本就是做管理员权限需要用到的函数了,现在把代码贴出来

    
    

    //admin_group_add。管理员组添加页 

    
    

    //链接数据库
    require("config.php");
    //检测COOKIE
    require("check.php");
    //权限添加,修改
    //1.在管理员数据表增加权限字段
    //2.修改用户界面,增加权限checkbox
    //3.接受前台提交POST
    //4.把post变成字符串存入数据库

    
    
    


    if($_POST) { $groupname = $_POST['groupname']; //由于表单提交的name属性值为$priv,为一个数组,因此将表单提交的数组转变成字符串 $private = join(",",$_POST['priv']); //将$pri存入数据库里 $sql = "INSERT INTO `admin_group`(`groupname`,`private`) VALUES ('{$groupname}', '{$private}')"; $result = mysql_query($sql); if(!$result)die(mysql_error()); } $priv = array( "index" => array( "index" => "新闻列表", "add_news" => "新闻添加", "category_news" => "新闻分类管理", "edit_news" => "新闻修改", "message" => "评论管理" ), "case" => array( "case" => "案例列表" ), "product" => array( "product" => "产品列表管理", "add_product" => "产品添加", "edit_product" => "产品修改", "category_product" => "产品分类管理" ), "admin" => array( "admin" => "用户列表管理", "add_admin" => "用户添加", "edit_admin" => "用户修改", "admin_group" => "用户组管理", "admin_group_add" => "用户组权限添加" ) );

    HTML表单代码:

    <form method="post" action="">
           
           <fieldset> <!-- Set class to "column-left" or "column-right" on fieldsets to divide the form into columns -->
                                        用户组名称:<input type="text" name="groupname" /><br />
                                        <p>请选择用户权限:</p>
                                        <?php foreach($priv as $child_priv):?>
                                            <?php foreach($child_priv as $p_key => $p):?>
                                        <input type="checkbox" value="<?php echo $p_key?>" name="priv[]" /><?php echo $p?><br />                      
                                            <?php endforeach; ?>
                                        <hr />
                                        <?php endforeach; ?>
    
    <input type="button" onclick="setCheck('priv[]',0)" value="全不选" />&nbsp;&nbsp;
                                        <input type="button" onclick="setCheck('priv[]',1)" value="全选" />&nbsp;&nbsp;
                                        <input type="button" onclick="setCheck('priv[]',2)" value="反选" />&nbsp;&nbsp;
             <input class="button" type="submit" value="提交新的用户组" />
           </fieldset>
           
           <div class="clear"></div><!-- End .clear -->
           
          </form>
    
    //admin_group。管理员组列表页,//admin_group_check。管理员权限检测页
    
    //连接数据库
    require("config.php");
    //检测COOKIE
    require("check.php");
    
    //后台的管理权限检测
    
    //按后台的文件名,作为索引,去判断管理员是否有权限
    
    //index.php,product.php,admin.php,case.php
    
    //总管:ALL,丫鬟:product,index , 苦力:product,case,index , 家丁:case,product, 奶妈:case
    
    //当我们打开页面时,判断当前登录的是哪个账号,找出相应的权限。
    
    //explode()转换成数组,in_array(),判断一个字符串是否存在于一个数组中,
    
    //打开平常页面的处理
    //1.读取当前的登录账号
    $userid = $_COOKIE["admin_userid"];
    //2.按当前登陆账号,获取权限列表
    $sql = "SELECT 
            `admin_group`.`private`
            FROM
             `admin_member`
            JOIN `admin_group` ON `admin_member`.`group` = `admin_group`.`groupname`
            where `admin_member`.`id` = '{$userid}' ";
    $result = mysql_query($sql);
    if(!$result)
    {
        die(mysql_error());
    }
    $row = mysql_fetch_assoc($result);
    $priv = $row['private'];
    $priv_dat = explode(",",$priv);
    
    //3.获取当前页面的文件名
    function getNowPageName()
    {
        //利用超全局变量$_SERVER获取当前文件名
        $page_url = $_SERVER['PHP_SELF'];
        //用explode()函数将当前页面的名字按'/'分隔成数组,end()函数取最后一组,可得到:XXX.php,XXX代表文件名
        $page_name = end(explode('/',$page_url));
        //将.php'后缀去掉
        $filename = str_replace('.php','',$page_name);
        return $filename;
        
    }
    
    $filename = getNowPageName();
    
    //4.没权限跳转到欢迎页面
    if(!in_array($filename,$priv_dat))
    {
        echo "<script>alert('太监不得入内!');location.href='index.php';</script>";
    }
    
    $sql = "SELECT * FROM `admin_group` where 1";
    $result = mysql_query($sql);
    if(!$result)
    {
        die(mysql_error());
    }
    //读取数据库里的`admin_group`表格
    $sql = "SELECT * FROM `admin_group` where 1 LIMIT $offset,$per_num";
    $result = mysql_query($sql);
    if(!$result)
    {
        die(mysql_error());
    }
    
     <tbody>
          <?php while($row = mysql_fetch_assoc($result)):?>
            <tr>
             <td><input type="checkbox" /></td>
                                        <td><?php echo $row['id']?></td>
             <td><?php echo $row['groupname']?></td>
           <?php endwhile; ?>
           </tbody>
  • 相关阅读:
    2017-2018-1 20155208 20155212 20155239 实验一 开发环境的熟悉
    2017-2018-1 20155332实验三 实时系统报告
    2017-2018-1 20155332 《信息安全系统设计基础》第九周学习总结
    第9周 实现PWD命令
    2016-2017第一学期 20155332 第八周课堂实践
    2017-2018-1 20155312 《信息安全系统设计基础》第八周学习总结
    20155332实验二 固件编程
    2017-2018-1 20155332 《信息安全系统设计基础》第7周学习总结
    20155332口令破解实验
    2017-2018-1 20155332 《信息安全系统设计基础》第六周学习总结
  • 原文地址:https://www.cnblogs.com/feng18/p/6556357.html
Copyright © 2011-2022 走看看