Bir e-posta gelen kaba terimleri Engelleme Davet

2 Cevap

Aşağıdaki kod, kullanıcıların e-posta başkalarına davet göndermek sağlayan bazı PHP kodu içeren. Bu çalışıyor. Ancak, kullanıcı "porno" ya da diğer kaba açısından hem kendi adını girin ve ardından sitemde tavsiye bu ad altında bir e-posta göndermek, böylece "check_porn_terms" adında bir işlev eklemek için çalışıyorum. Değişken "$ _POST ['Yayıncı']" kullanıcı adıdır.

Aşağıdaki fonksiyonu çalışmaz. Ben çalışmak için nasıl alabilirim herhangi bir fikir?

Teşekkür peşin,

John

function check_porn_terms($input) {
    $porn_terms = array("porn", "sex", "etc.");

    return !preg_match('#\b(' . join('|', array_map('preg_quote', $porn_terms)) . ')\b#i', $input);
}


$sendername = $_POST['sendername'];
$sendername = strtolower($sendername);

if(!check_porn_terms($sendername))
{

   session_write_close();
   header("Location:http://www.site.com/friends.htm");
   exit;

}

$msg = "<html><body>Hello, your friend ".htmlspecialchars($_POST['sendername'])." recommends that you use <a href='http://www.site.com/'>Site.com</a><br><br><img src='http://site.com/images/blacklogo.PNG'></body></html>";
$subject = "Try out Site.com";
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: ' . $_POST['sendername'] . "\r\n";
foreach($_POST['email'] as $email){
mail($email, $subject,$msg,$headers);
}

2 Cevap

Sen clbuttic referans ile, yukarıda belirtildiği gibi bu durdurmak için çalışırken kaygan bir eğim aşağı gidiyor. Çalışmak için yukarıdaki kodu almak bile çok kolay atlatılabilir ve sürekli bu bir mücadele olacak ve yanlışlıkla böyle iyi sözler engelleme gibi yan etkilere neden olur. Bu sizin taktiği yeniden isteyebilirsiniz.

Bu konuda bazı düşünceler bu okuyun:

http://thedailywtf.com/Articles/The-Clbuttic-Mistake-.aspx

http://www.codinghorror.com/blog/archives/001176.html

Bak, ben argo denemek ve durdurmak için takdire değer olduğunu düşünüyorum ve ben (birisi daha iyi bir şekilde anladım emin değilim) ... Bu çözümü için yazılım dünyada daha iyi bir tekniği bilmek isterdim.

Ben bunu anladım: Ben eklemek zorunda

ob_start();

başlığında kod üst kısmında. Ben bu kullanarak çünkü bu olduğunu düşünüyorum:

header("Location:http://www.site.com/friends.htm");