Filtre Sistemi (Veritabanli)
Filtre Sistemi
Hepinize merhaba arkadaşlar. Benim istediğim veritabanımda bulunan kelimeleri cekip kontrol ettirerek yazdırmak bunu şu fonksiyon ile başardım ;
<?php
function clear($veri)
{
global $dbh;
$filter = $dbh->prepare('SELECT * FROM cms_filter');
$filter->execute();
$getword = $filter->fetchAll(PDO::FETCH_COLUMN, 1);
$changefilter = $dbh->prepare('SELECT * FROM cms_filter');
$changefilter->execute();
$getchange = $changefilter->fetchAll(PDO::FETCH_COLUMN, 2);
$degisecek = $getword;
$yeniler = $getchange;
return str_replace($degisecek,$yeniler,$veri);
}
?>
Bu yapmis oldugum fonksiyon ile gelip o yazilan yaziyi ya da texti degistirebiliyordum. Ama benim istedigim eger veritabanimda varsa o kelime POST edilen cümleyi hatalı şekilde döndürtmek. Nasil yapariz ?
Tesekkurler @makifgokce hocam ise yaradi ancak bir sorun oluştu OOP olarak veri ekledigim icin foreach kullaninca diger alertleri alamiyorum.
Ornegin ;
<?php
public static function CreateComment()
{
global $dbh, $lang;
if (isset($_POST['addcomment'])) {
$k = $dbh->prepare("SELECT * FROM cms_filter");
$k->execute();
foreach ($k as $row) {
$content = $_POST['comment'];
$result = $dbh->prepare('SELECT * FROM comment_cms ORDER BY id DESC LIMIT 1');
$result->execute();
$res = $result->fetch(PDO::FETCH_ASSOC);
if (stristr($content, $row['word']) == true) {
Html::error($lang["false"] . $lang["notAvailable"]);
} else {
if ($res['authorid'] !== User::userData('id')) {
Html::errorSucces($lang["true"] . $lang["succesComment"]);
$comment = $dbh->prepare('INSERT INTO comment_cms SET
content = :content,
authorid = :auid,
newsid = :newsid,
verify = :verify,
date = :date
');
$comment->execute(array(
":content" => $content,
":auid" => User::userData('id'),
":newsid" => $_GET['newsid'],
":verify" => 1,
":date" => time()
));
}
else {
Html::error($lang["false"] . $lang["spamming"]);
}
}
}
Yonlendir('haber?newsid=' . $_GET['newsid'], 4);
}
}
?>
Bu benim OOP de yazmis oldugum bir sinif yorum eklenmesi icin. Dediklerinizi yaptim yorum ekleniyor ancak == true'yse o istedigim hatayi verdiriyorum burasi da gayet guzel ancak eger son yorumu o atmışsa yani yaptığım sisteme göre son yorumu atmışsa o kişi spam olarak algılandı mesajıda geliyor 2 si birden geliyor bunun onune nasil gecerim? Yani eger == true'yse sadece o mesaj gosterilmesini yapabilir miyim ?
// Ek olarak POST edilen veri yasakli kelime icerse veya direkt olarak yasakli kelime olsa bile alert gelmesine ramen paylasiliyor.