我如何在此表单函数中添加坏词过滤器(如果存在坏词,则不会提交)
How can i add Bad word filter in this form function (if bad word exist it wont submit)
这是我试过的脚本,它工作并发出警报,但最后提交了表单,如果文本区域中存在错误的词,我想停止。表单不应该被提交,人们会得到警报功能。我正在使用 CODEIGNITOR 框架。
脚本:
<script type="text/javascript">
var swear_words_arr=new Array("fuck","kill","ugly");
var swear_alert_arr=new Array;
var swear_alert_count=0;
function reset_alert_count()
{
swear_alert_count=0;
}
function validate_text()
{
reset_alert_count();
var compare_text=document.form1.msg_text.value;
for(var i=0; i<swear_words_arr.length; i++)
{
for(var j=0; j<(compare_text.length); j++)
{
if(swear_words_arr[i]==compare_text.substring(j,(j+swear_words_arr[i].length)).toLowerCase())
{
swear_alert_arr[swear_alert_count]=compare_text.substring(j,(j+swear_words_arr[i].length));
swear_alert_count++;
}
}
}
var alert_text="";
for(var k=1; k<=swear_alert_count; k++)
{
alert_text+="\n" + "(" + k + ") " + swear_alert_arr[k-1];
}
if(swear_alert_count>0)
{
alert("The message will not be sent!!!\nThe following illegal words were found:\n_______________________________\n" + alert_text + "\n_______________________________");
document.form1.msg_text.select();
}
else
{
document.form1.submit();
}
}
function select_area()
{
document.form1.msg_text.select();
}
window.onload=reset_alert_count;
</script>
是否可以在 php 函数中转换它。
模型函数:
public function create_msg($msg_text, $user_id){
$data = array(
'msg_text' => $msg_text,
'user_id' => $user_id
);
if( $this->db->insert('swall_message', $data) ){
return true;
}else{
return false;
}
}
文本区域代码:
<form action="<?php echo base_url('user/'.$user->user_uid);?>" method="POST" name="form1">
<div class="form-group">
<textarea name="msg_text" onClick="select_area()" cols="30" class="form-control" rows="5" minlength="1" maxlength="5000" required=""></textarea>
<input type="hidden" name="user_id" value="<?php echo $user->user_id;?>">
</div>
<div class="col-12">
<label class="custom-label"><?php if(isset($msg)) echo $msg;?></label>
</div>
<button type="submit" onClick="validate_text();" class="btn btn-block text-uppercase">submit</button>
</form>
var swear_words_arr=new Array("fuck","kill","ugly");
function validate_text(event){
const text = document.getElementById("text").value;
console.log(text); // if you see the console, the form submit is stopped.
if(swear_words_arr.indexOf(text) !== -1){
event.preventDefault();
event.stopPropagation();
return false;
}
return true;
}
Try to insert return before the function and use stopPropagation
<form>
<input type="text" name="text" id="text">
<button type="submit" onClick="return validate_text(event);" class="btn btn-block text-uppercase">submit</button>
</form>
在php代码中过滤数据
此代码未经测试。参考 here
<?php
$msg_text = 'fuck';
$data = array(
'msg_text' => $msg_text,
'user_id' => $user_id
);
$swear_words_arr=array("fuck","kill","ugly");
if(in_array($data['msg_text'], $swear_words_arr)){
echo "failed";
return false;
}
// else this is true. your db code below
echo "passed";
return true;
?>
这是我试过的脚本,它工作并发出警报,但最后提交了表单,如果文本区域中存在错误的词,我想停止。表单不应该被提交,人们会得到警报功能。我正在使用 CODEIGNITOR 框架。
脚本:
<script type="text/javascript">
var swear_words_arr=new Array("fuck","kill","ugly");
var swear_alert_arr=new Array;
var swear_alert_count=0;
function reset_alert_count()
{
swear_alert_count=0;
}
function validate_text()
{
reset_alert_count();
var compare_text=document.form1.msg_text.value;
for(var i=0; i<swear_words_arr.length; i++)
{
for(var j=0; j<(compare_text.length); j++)
{
if(swear_words_arr[i]==compare_text.substring(j,(j+swear_words_arr[i].length)).toLowerCase())
{
swear_alert_arr[swear_alert_count]=compare_text.substring(j,(j+swear_words_arr[i].length));
swear_alert_count++;
}
}
}
var alert_text="";
for(var k=1; k<=swear_alert_count; k++)
{
alert_text+="\n" + "(" + k + ") " + swear_alert_arr[k-1];
}
if(swear_alert_count>0)
{
alert("The message will not be sent!!!\nThe following illegal words were found:\n_______________________________\n" + alert_text + "\n_______________________________");
document.form1.msg_text.select();
}
else
{
document.form1.submit();
}
}
function select_area()
{
document.form1.msg_text.select();
}
window.onload=reset_alert_count;
</script>
是否可以在 php 函数中转换它。
模型函数:
public function create_msg($msg_text, $user_id){
$data = array(
'msg_text' => $msg_text,
'user_id' => $user_id
);
if( $this->db->insert('swall_message', $data) ){
return true;
}else{
return false;
}
}
文本区域代码:
<form action="<?php echo base_url('user/'.$user->user_uid);?>" method="POST" name="form1">
<div class="form-group">
<textarea name="msg_text" onClick="select_area()" cols="30" class="form-control" rows="5" minlength="1" maxlength="5000" required=""></textarea>
<input type="hidden" name="user_id" value="<?php echo $user->user_id;?>">
</div>
<div class="col-12">
<label class="custom-label"><?php if(isset($msg)) echo $msg;?></label>
</div>
<button type="submit" onClick="validate_text();" class="btn btn-block text-uppercase">submit</button>
</form>
var swear_words_arr=new Array("fuck","kill","ugly");
function validate_text(event){
const text = document.getElementById("text").value;
console.log(text); // if you see the console, the form submit is stopped.
if(swear_words_arr.indexOf(text) !== -1){
event.preventDefault();
event.stopPropagation();
return false;
}
return true;
}
Try to insert return before the function and use stopPropagation
<form>
<input type="text" name="text" id="text">
<button type="submit" onClick="return validate_text(event);" class="btn btn-block text-uppercase">submit</button>
</form>
在php代码中过滤数据
此代码未经测试。参考 here
<?php
$msg_text = 'fuck';
$data = array(
'msg_text' => $msg_text,
'user_id' => $user_id
);
$swear_words_arr=array("fuck","kill","ugly");
if(in_array($data['msg_text'], $swear_words_arr)){
echo "failed";
return false;
}
// else this is true. your db code below
echo "passed";
return true;
?>