我试图让用户可以更改他们正在更改配置文件文本颜色和背景颜色。
我从codepen.io
创建了 DEMO在此演示中,您可以看到当您选中任何单选按钮时,文本内的.colored-text
div将自动更改。
我想只允许这种颜色:#fa743e,#323949,#0000,#d8dbdf
。但问题在于,如果用户使用开发人员控制台将数据库中的#fa743e
颜色发布更改为#ffffff
到#ffffff
。这不好。
这是形式:
<form method="post" action="">
<!--Text Color-->
<div class="renk">
<input type="radio" id="red" class="sr ja" name="change-text-color" value="#fa743e">
<label for="red" class="llr"></label>
</div>
<!--Background Color-->
<div class="renk">
<input type="radio" id="lr" class="lr ja" name="change-background-color" value="#000000">
<label for="lr" class="llr"></label>
</div>
</form>
我正在使用这个ajax post方法:
$.ajax({
type: "POST",
url: 'change_theme.php',
data: {change-text-color:$('input[name="change-text-color"]:checked').val(),change-background-color:$('input[name="change-background-color"]:checked').val()},
beforeSend: function(){$("#posting").html('<img src="icons/ajaxloader.gif"/>'); },
success: function(html) {
$('.tduzalani, .temayi-degistir-alani').animate({'opacity':'0'}, 300, 'linear', function(){
$('.tduzalani, .temayi-degistir-alani').css('display', 'none');});
swal({ title: "Theme was changing succuesfully!", text: ":)", timer: 5000 });
}
});
这是 change_theme.php
<?php
include_once 'includes.php';
$colors = array( '#fa743e','#ffcc4d','#94d487','#4a913c','#89c9fa','#3b94d9','#abb8c2','#dd2e44','#f5abb5','#bfcfee','#be72ea','#ea729f','#000000','#0e1d40','#0e4034','#40310e','#451468','#ffffff','#006cff','#bb0707','#660202','#44404b','#422929','#323949');
if((isSet($_POST['change-text-color']) && in_array($_POST['change-text-color'], $colors)) || (isSet($_POST['change-change-background-color']) && in_array($_POST['change-background-color'], $colors)))
{
$text-color=mysql_real_escape_string($_POST['change-text-color']);
$background-color=mysql_real_escape_string($_POST['change-background-color']);
$data=$Suavi->change_theme($uid,$text-color,$background-color);
}
?>
答案 0 :(得分:3)
底线:永远不要相信客户的任何信息。客户端可以改变他们想要的任何内容,甚至可以编辑进入服务器的数据。如果您希望确保他们无法做某事,那么您必须对他们唯一无法改变的事情(服务器)进行检查。 Here是一个很好的指南,解释了我所提到的好处。
要回答以下评论:
Javascript
:
$.ajax({
type: "POST",
url: 'change_theme.php',
data: {change-text-color:$('input[name="change-text-color"]:checked').val(),change-background-color:$('input[name="change-background-color"]:checked').val()},
beforeSend: function(){$("#posting").html('<img src="icons/ajaxloader.gif"/>'); },
success: function(html) {
if ( html == "1" ) {
$('.tduzalani, .temayi-degistir-alani').animate({'opacity':'0'}, 300, 'linear', function(){
$('.tduzalani, .temayi-degistir-alani').css('display', 'none');});
swal({ title: "Theme was changing succuesfully!", text: ":)", timer: 5000 });
} else {
alert('There was an error saving this!')
}
}
});
PHP
:
<?php
include_once 'includes.php';
$textcolors = array('#fa743e','#323949','#000000','#d8dbdf');
$bgcolors = array('#fa743e','#ffcc4d','#94d487','#4a913c','#89c9fa','#3b94d9','#abb8c2','#dd2e44','#f5abb5','#bfcfee','#be72ea','#ea729f','#000000','#0e1d40','#0e4034','#40310e','#451468','#ffffff','#006cff','#bb0707','#660202','#44404b','#422929','#323949');
//
if( isSet($_POST['change-text-color']) && in_array($_POST['change-text-color'], $textcolors) && isSet($_POST['change-change-background-color']) && in_array($_POST['change-background-color'], $bgcolors) )
{
$text-color=mysql_real_escape_string($_POST['change-text-color']);
$background-color=mysql_real_escape_string($_POST['change-background-color']);
$data=$Suavi->change_theme($uid,$text-color,$background-color);
echo 1;
}
else
{
echo 0;
}
exit;
?>
答案 1 :(得分:2)
您无法阻止用户更改控制台中的内容。所有前端代码(HTML,JS,CSS)都被发送到浏览器,然后任何人都可以查看它并根据自己的意愿进行更改。如果您真的想限制允许的颜色,请进行服务器端检查。
答案 2 :(得分:0)
在服务器端代码 change_theme.php 中,您应该有两个用于文本颜色和背景颜色的单独数组。
<?php
include_once 'includes.php';
$bgcolors = array('#fa743e','#ffcc4d','#94d487','#4a913c','#89c9fa','#3b94d9','#abb8c2','#dd2e44','#f5abb5','#bfcfee','#be72ea','#ea729f','#000000','#0e1d40','#0e4034','#40310e','#451468','#ffffff','#006cff','#bb0707','#660202','#44404b','#422929','#323949');
$textcolors = array('#fa743e','#323949','#000000','#d8dbdf');
if((isSet($_POST['change-text-color']) && in_array($_POST['change-text-color'], $textcolors)) || (isSet($_POST['change-change-background-color']) && in_array($_POST['change-background-color'], $bgcolors)))
{
$text-color=mysql_real_escape_string($_POST['change-text-color']);
$background-color=mysql_real_escape_string($_POST['change-background-color']);
$data=$Suavi->change_theme($uid,$text-color,$background-color);
}
?>
希望这会对你有所帮助。