У нас есть веб-сайт, использующий устаревшую CMS для электронной коммерции, действительно связывает мои руки за моей спиной из-за отсутствия у меня возможностей и возможностей для начинающих с JS и jQ.Javascript - Скрытие кнопки, если не вошел в систему
На этом сайте нам нужно скрыть цены и добавить в корзину кнопки, если пользователь не вошел в систему. У меня есть сценарий, который работал для меня в прошлом, который проверяет файлы cookie пользователей. Но после редактирования этого скрипта для нового сайта он окажется неработоспособным.
Я, вероятно, испортил что-то очень простое в синтаксисе, поэтому, если кто-то может быстро взглянуть на мой скрипт и сообщить мне, где я ошибаюсь, это было бы здорово!
<script type="text/javascript">
function DisplayAuthorizedContent(name) {
var cookies=document.cookie;
var start = cookies.indexOf(name + "=");
var name = "";
var start1;
var end1;
var tmp;
var signed_in = -1;
if (start != -1) {
start = cookies.indexOf("=", start) +1;
var end = cookies.indexOf("|", start);
if (end != -1) {
signed_in = cookies.indexOf("|yes", start);
name = unescape(cookies.substring(start,end-1));
if (signed_in != -1) {
$('.loginFilter').show();
}
}
}
if (signed_in == -1) {
$('.loginFilter').empty();
$('.addMessage').each(function(){
$(this).append('Requires Wholesale Account to Purchase.<br><br><a href=\"#\" class=\"applyLink\">Apply Here<\/a>');
$(this).show();
});
}
}
DisplayAuthorizedContent("ss_reg_000778370");
</script>
HTML-
<div class="loginFilter addMessage"><a href="#">Add to Cart Example</a></div>
Возможно, это не то, что вы хотите услышать, но я чувствую себя обязанным говоря об этом, есть ли логика на стороне сервера, которая проверяет, вошли ли вы в систему? Если это не очень плохая идея. Все, что мне нужно сделать, это перейти на ваш сайт, нажать F12 в моем браузере, удалить отображение: нет атрибутов и бум, я вошел в систему! Ограничения безопасности должны быть обработаны на стороне сервера. Клиентская сторона означает, что вы на 100% доверяете браузеру делать то, что вы говорите, чтобы сделать это невероятно страшно. – dman2306
Чтобы усилить то, что говорит @ dman2306, (1) клиент должен предложить интерфейс входа/выхода, который делает запрос на сервер (2), подписанный/подписанный, должен быть на стороне сервера, (3) сервер должен «информировать» клиента о состоянии на стороне сервера, как правило, путем включения/удержания содержимого. Клиент не должен переопределять состояние на стороне сервера, определяя его для себя (например, чтение файла cookie), а также не эмулировать состояние входа в систему, показывая скрытый контент. –
Спасибо, ребята. На самом деле я уже выразил свои проблемы с клиентом и моим начальником. Также не очень обеспокоены безопасностью ... -_- – user2684799