PHP-基于用户级别隐藏/显示内容


PHP - Hide/Show Content based on User Level

我有登录页面和用户页面,在用户使用正确的用户名和密码登录后,它将转到用户页面。用户页面由一个用户列表表组成,每个用户行旁边都有一个"编辑用户"按钮。例如,在屏幕截图中-->https://i.stack.imgur.com/K3qxi.png

因此,根据用户级别,如果用户级别=用户(ID=4),我想隐藏编辑按钮。到目前为止,我尝试过的都是这样的,但没有效果。我已经导入了会话代码和所有查询。下面的代码只是我想做的事情的一部分。

include_once("session.php");
if($_SESSION['userlvl']==4){
    echo "USER";
?>
<script>
$document.(ready(function){
  $(#editbutton).hide();
});
</script>
<?php
}
?>

<a id="editbutton"><img src="Edit.png"/></a>

您可以使用class而不是Id

include_once("session.php");
if($_SESSION['userlvl']==4){
    echo "USER";
?>
<script>
$document.(ready(function){
  $(".editbutton").hide();
});
</script>
<?php
}
?>

<a class="editbutton"><img src="Edit.png"/></a>

正如@insertusernamehere所指出的,您应该根据用户的访问级别使用PHP来控制写入页面的内容——仅仅从视图中隐藏内容只是在找麻烦,因为在代码视图中查找内容很难。下面只是一个如何做到这一点的例子。

<?php
    include_once("session.php");
?>
<html>
    <head>
        <title>Restrict content based upon user level example</title>
        <?php
            if( isset( $_SESSION['userlvl'] ) ){
                $level=intval( $_SESSION['userlvl'] );
                /*
                    If you have javascript functions that actually submit the forms or
                    interact somehow with the data that are to be restricted to particular
                    levels of user, generate the code for that level only.
                */
                switch( $level ){
                    case 1:
                        /* Basic user */
                        echo "
                            <script id='user' type='text/javascript'>
                                function view_record(){
                                    alert('hello world');
                                }
                            </script>
                        ";
                    break;
                    case 2:
                        /* Superuser */
                    break;
                    case 3:
                    case 4:
                        /* Manager & Admin level users ? */
                        echo "
                        <script id='admin' type='text/javascript'>
                            function delete_all_users(){
                            }
                            function drop_tables(){
                            }
                            function drop_database(){
                            }
                            function edit_record(e){
                                alert(e+' edit record') 
                            }
                            function delete_record(e){
                                alert(e+' delete record')   
                            }
                        </script>
                        ";
                    break;  
                }
            }
        ?>
    </head>
    <body>
        <table>
        <?php
            /* Assuming you use php to generate the table: pseudo style code */
            while( $rs=$result->fetch() ){
                $editbttn='';
                $deletebttn='';
                if( in_array( $level, array( 3,4 ) ) ){
                    /* Admin & manager */
                    $editbttn="<a class='editbutton' onclick='edit_record(event)'><img src='Edit.png'/></a>";
                    $deletebttn="<a class='deletebutton' onclick='delete_record(event)'><img src='Delete.png'/></a>";
                }
                echo "
                    <tr>
                        <td>DATA</td>
                        <td>DATA</td>
                        <td>DATA</td>
                        <td>$editbttn</td>
                        <td>$deletebttn</td>
                    </tr>";
            }
        ?>
        </table>
    </body>
</html>

我假设您想限制只有"用户"权限的用户不能编辑数据?

你可能想考虑试试这个,因为我认为它更直接、更简单?

session_start();
 if($_SESSION['userlvl'] == 4) {
    echo "USER";
    }else{
    $userlvlpermission = '<a id="editbutton"><img src="Edit.png"></a>';
    }
 //At where you wanted to place the "editbutton"
 <?php if($userlvlpermission){echo $userlvlpermission;}?>

一定要检查编辑页面的用户会话,以防他们知道确切的url。

AT编辑页面

<?php
session_start();
if ($_SESSION['userlvl'] = 4){
echo "NO PERMISSION";
echo "header('Refresh: 3;url=page.php')";
exit();
}

这里有一个简单的解决方案。

include_once("session.php");
if ($_SESSION['userlvl'] == 4) {
  $hideme = 'display:none;'
} else {
  $hideme = '';
} ?>

< a id = "editbutton"
style = "<?php echo $hideme; ?>" > < img src = "Edit.png" / > < /a>