2013-08-29 46 views
0

我正在開發允許用戶向系統發送反饋的網站。我通過使用textarea和按鈕來創建反饋表單。最重要的是當用戶點擊提交時,如果用戶輸入一些我不希望他們輸入的詞,那麼反饋將不會發送到系統;它會提醒用戶在提交前退出該單詞。單擊提交時驗證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; 
} 
?> 

這是不行的。任何人都可以幫我解決這個問題嗎?

提前致謝。

+0

谷歌褻瀆檢查有很多插件,將爲您做到這一點。 – jeff

+0

@Sovat可能我的答案會幫助你 – Gautam3164

回答

2

嘗試像

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

$entry將文本框的值即$ _ POST [ '文本']not $ _ POST [ '添加']

+0

它現在可以工作。謝謝。 – Sovat

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; 
} 
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'); 
    } 
} 
?> 
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> 
0

所有你需要做的是停止表單提交,如果用戶在你的JavaScript任何禁用語

<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> 

<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