单击“提交”时验证textarea

时间:2013-08-29 05:15:34

标签: php javascript html

我正在开发允许用户向系统发送反馈的网站。我已经使用textarea和按钮提交了反馈表单。最重要的是当用户点击提交时,如果用户输入了一些我不希望他们输入的单词,那么反馈将不会发送给系统;在提交提交之前,它会提醒用户删除该字词。

从现在开始,我只是创建一个简单的代码,如果用户输入我不希望他们以反馈形式输入的单词,它将回显一些警告。

这是我的代码

<form action="main.php" method="post">
    <textarea cols='10' rows='5' name='text'></textarea>
    <br/>
    <input type='submit' name='add' Value='Add to list' />
</form>

<?php
if (isset($_POST['add'])) {
    $banned = array('dog', 'cat', 'cow'); // Add more
    $entry = $_POST['add'];
    foreach($banned as $word): if (strpos($entry, $word) !== false) die('Contains banned word');
    endforeach;
}
?> 

这不行。任何人都可以帮我解决这个问题吗?

提前感谢。

6 个答案:

答案 0 :(得分:2)

尝试

$entry = $_POST['text'];    // Not $_POST['add'];
foreach ($banned as $word):
    if (strpos($entry, $word) !== false) {
        echo 'Contains banned word';
        exit;
    }
endforeach;

您的$entry将是文本框值,即 $ _ POST ['text'] not $ _POST ['add']

答案 1 :(得分:0)

使用in_array函数http://php.net/manual/ru/function.in-array.php

$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
    echo "Got Irix";
}

答案 2 :(得分:0)

我建议您不要在每次输入文本时将代码提交到服务器,我建议您在客户端使用Javascript并仅在已通过验证时提交。

HTML

<form action="main.php" method="post">
<input type="text" onchange="validate_function(this)">
 //works with text area too.
<input type='submit' name='add' Value='Add to list' />
</form>

的Javascript

validate_function(a)
{
r=0;
banned = array('dog', 'cat', 'cow');
var lines = a.val().split('\n');
for(var x=0;x<banned.length;x++) 
{    
for(var i = 0;i < lines.length;i++)
{
if (lines[i].indexOf(banned[x]) > -1)
 {
      r=1;
      break;
}
 else 
{

}

}
if(r==1)
break;
}
if( r==0)
return true;
else 
return false;
}

答案 3 :(得分:0)

<?php
if(isset($_POST['add'])){
    $banned = array('dog', 'cat', 'cow'); // Add more
    $entry = $_POST['text'];

    if(in_array($entry,$banned))
    {
        die('Contains banned word');
    }
}
?>

答案 4 :(得分:0)

您想要进行单词审查。要完成此任务,请使用str_ireplace()函数。我将在下面给出一个示例代码。这个功能的作用是用另一个替换这个词。

<?php
$find=array('galaxy', 'planet', 'moon');
$replace=array('spiral', 'earth', 'satelite');
if (isset($_POST['userinput'])&&!empty($_POST['userinput']))
{
$user=$_POST['userinput'];
$user_new=str_ireplace($find, $replace, $user);
echo $user_new;

}
?>
<hr>
<form action="index.php" method="POST">
<textarea cols="50" rows="10" name="userinput"><?php echo $user; ?></textarea><br />
<input type="submit" value="submit" />
</form>

答案 5 :(得分:0)

如果用户有任何禁用词

,您需要做的就是停止提交表单
<form action="main.php" method="post">
<textarea cols='10' rows='5' name='text' id='text'></textarea>
<br/>
<input type='submit' name='add' Value='Add to list' onclick='validate()' />
</form>

在你的javascript中

<script>
function validate() {
   var text = document.getElementById('text').value;
   var banned = new Array('dog', 'cat', 'cow');
   for (var x in banned) {
      if ( strpos(text,banned[x],0) ) {
            continue; // will stop the loop
            return false; // will stop everything and will not let the form post to php

      }
   }
   return true; // will return true and will post the form to php
}

// Custom Function
function strpos (haystack, needle, offset) { // http://phpjs.org/functions/strpos/
  var i = (haystack + '').indexOf(needle, (offset || 0));
  return i === -1 ? false : i;
}
</script>

我希望这会有所帮助

PS:函数strpos取自phpjs.org