2016-06-22 4 views
5

Я пытаюсь достичь чего-то, что я не могу окутать. Дело в том, что когда регистрируется конкретный пользователь, я храню в сеансе пользователя и что он регистрируется.Ограничить Javascript от PHP?

Прежде чем сказать мне, что я знаю, что это не лучшая практика, но цель этой страницы только внутренняя, и нет возможности быть взломанной или потому, что вы можете получить доступ только к ней.

Во всяком случае, дело в том, что в таблице есть редактируемые поля, которые должны редактироваться только администратором, но это должно быть видно только остальным.

Для достижения редактируемой таблицы я использовал библиотеку datatables вместе с некоторыми ajax и JQuery.

Я не могу думать о методе, чтобы ограничить возможность редактирования, когда вошедший пользователь не админ, кроме:

var logged = <?php echo $_SESSION['logged_user'];?>; 
if (logged=='admin') { 
    // action here 
} 

вы знаете, лучший метод или легче понять? Большое спасибо!

+1

Даже если вы говорите, что это только для внутренних целей, она по-прежнему ужасно. Откройте свой F12 и увидите свою ошибку;) – GuyT

+2

'var logged = ;' Должно быть 'var logged = ' '; 'в первую очередь .. –

+0

Многие способы достичь этого, но все зависит от того, как вы извлекаете эти редактируемые данные. Я вижу, вы упоминали об использовании ajax. Если вы запрашиваете данные таблицы через ajax, вы можете проверить сеанс для «admin», в зависимости от того, как вы выводите результат запроса, вы можете вывести JSON.Example {«Auth»: {«Admin»: true}, «Inputs»: {"InputName1": "Value1", "InputName2": "Value2", "InputName3": "Value3",}} Используйте входы для построения отображения запроса таблицы и проверки auth для создания редактируемой формы. Я бы также рекомендовал проверить сеанс, когда клиент пытается обновить данные таблицы. – NewToJS

ответ

3

Одним из решений было бы иметь функцию/функции, которые вместо этого редактируют таблицы вокруг проверки с помощью чистого php, поэтому «нормальным» пользователям не нужно загружать или даже видеть javascript, который это делает.

<?php If(isAdmin) { ?> 
    Javascript here 
<?php } ?> 

Это также делает это так обычные пользователи просто не инспектировать элемент -> удалить, если заявление и затем может сделать то же самое.

+0

Я знаю, что это может быть не лучшее решение, но оно простое и идеально подходит для того, что мне нужно. Большое спасибо, сэр! –

3

Сделайте поля readonly или используйте метку вместо ввода, когда пользователь не является администратором.
Выполнение этого readonly будет работать, если оно предназначено только для внутренней цели, и вы можете переключать это поле позже на javascript или даже вы можете установить переменную javascript как is_admin true для false, а после document.ready() вы можете переключить атрибут поля ввода readonly true или false.

1

Вызовите свой html с помощью токена безопасности в качестве параметра URL.

Затем вы должны отправить этот токен безопасности обратно на сервер в ajax-запросе и получить зарегистрированный пользователь.

Что-то вроде этого

www.example.com?231212sdsldkfjsl2131212lskjlkdsj 


var sec = location.search; 

$http.get('testuser.php?' + sec, function(data){ 
    user = data.user; 
}); 
Смежные вопросы