2015-11-14 2 views
0

У меня есть страница входа и пользовательская страница, которая после логина пользователя с правильным именем пользователя и паролем переходит на страницу пользователя. Страница пользователя состоит из таблицы списка пользователей и имеет кнопку «Изменить пользователя» рядом с каждой пользовательской строкой. Например, на скриншоте здесь -> http://i.stack.imgur.com/K3qxi.pngPHP - Скрыть/показать содержимое на основе уровня пользователя

Итак, на уровне пользователя, если пользовательский уровень = Пользователь (который имеет 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> 
+0

Как это не работает? Вы получаете сообщение об ошибке? – Andrius

+1

Вы должны скрыть его с помощью PHP, а не JavaScript, иначе вы все равно можете найти его в исходном коде. Вы также должны защитить свою функцию редактирования и скрипт, который получает форму, так как пользователи могут отправлять запросы на эту страницу, если они знают URL и форму, даже если у них нет кнопки. – insertusernamehere

ответ

-1

Это простое решение.

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> 
+0

его работая, спасибо! :) –

0

вы можете использовать класс вместо 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> 
+0

его все еще не работает, но спасибо btw :) –

0

Как было отмечено на @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> 
0

Я предположил, что вы хотите ограничить пользователя, у которого есть только привилегия «Пользователь», чтобы не редактировать данные?

Возможно, вы захотите рассмотреть это, поскольку я думаю, что это более прямолинейно и просто?

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(); 
} 
+0

Я пробовал этот метод, но была ошибка: $ userlvlpermission не определен. Btw, если я проверяю пользовательский сеанс страницы редактирования, как я могу отключить форму, если пользовательский уровень - это Пользователь? Могу ли я сделать форму отключенной? –

+0

Я предполагаю, что у вас есть страница входа. Вы можете сделать переадресацию на страницу входа или эхо «нет разрешения на редактирование» и выйти из сценария, см. Отредактированный код –

+0

Хорошо, я попробую. Спасибо :) –

Смежные вопросы