0
我目前正在對我正在處理的網站實施註釋部分。我想阻止人們留下愚蠢的評論。我有一張表格,其中包含我不想在評論中留下的字詞。到目前爲止,我使用array_intersect來比較它和表單。我首先使用爆炸將提交的表單從字符串更改爲數組。如果找不到任何不良詞,則將該評論插入到數據庫中。如果找到了一個禁忌詞,那麼現在我只迴應一些東西來測試。我的問題是,array_intersect似乎返回的東西,即使沒有找到匹配。在下面的代碼中,print_r($ result)= Array()Array()。這是爲什麼?array_intersect返回一些東西,即使沒有匹配存在
<?php
if (isset($_POST['name']) && isset($_POST['commentaire'])) {
try {
$db = new PDO("mysql:host=$server;dbname=etvoila;charset=utf8", $username, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
$name = htmlspecialchars($_POST['name']);
$comment = htmlspecialchars($_POST['commentaire']);
validateWords($name);
validateWords($comment);
if ($badWord = 1)
{
echo "Bad word found!";
} else {
$insert = $db->prepare("INSERT INTO comments (name, comment) VALUES (:name, :comment)");
$insert->execute(array(
'name' => $name,
'comment' => $comment
));
echo "Thank you";
}
}
function validateWords($sentence) {
$badWord = 0;
try {
$bdd = new PDO("mysql:host=$server;dbname=etvoila;charset=utf8", $username, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));}
catch (Exception $e)
{
die('Error : ' . $e->getMessage());
}
$sentence2 = trim($sentence, ".!?");
$sentence2 = strtolower($sentence2);
$sentence2 = explode(" ",$sentence2);
$select = $bdd->prepare('SELECT words FROM forbiddenWords');
$select->execute();
while ($forbiddenWords = $select->fetch()) {
$result = array_intersect($sentence2,$forbiddenWords);
if ($result) {
$badWord = 1;
}
}
}
?>
這似乎並沒有工作。同樣的事情發生。在你給我的代碼之後,我添加了echo $ badWord,但沒有顯示出來。我試過這個: $ result = array_intersect($ sentence2,$ forbiddenWords); print_r($ result); 和它打印Array()50次(我的表格包含大約50個單詞) –
嗯,我認爲我們在這裏做錯了什麼,讓我更新我的代碼 –
@MichaëlFournier嘗試print_r(count($ result));並看看結果是什麼,並且可以print_r($ forbiddenWords)和print_r($ sentence2)一次,這樣我就可以看到你的數組格式 –