Oy karıştırmasını botlar önlemek için POST GET dönüştürme

0 Cevap php

Ben oy ile bir PHP tabanlı alıntı veritabanını sunmaya qdbs 1.10 kullanan bir siteyi koşuyorum. Oylama botlar kaza tırnak oylayacak neden GET üzerinden uygulanmaktadır. Bunu önlemek için, ben mesajları için GET isteklerini dönüştürmek istiyorum.

Ben tam bir PHP de acemi, ve genel olarak web geliştirme değilim. Minimal bilgi ile bu şansı gerçekleştirmek mümkün mü? Takip için herhangi bir desen var mı, ya da bunu yapmak için nasıl bazı ipuçları var?

(Ben geçici bir çözüm olarak robots.txt değişen değilim, ama bu temel sorunu çözmüyor.)

Edit: Bu kodun ilgili bölümü gibi görünüyor. Ben tabii bu kendim yazmadım, ve ben sadece neler olabileceğini tahmin ederek takip edebilirsiniz - PHP bir kelime öğrendim asla.

index.php

if ($_GET['do'] || $_POST['do']) {
    switch ($_GET['do']) {
        case 'rate':
             $sql = "SELECT ip FROM ".$_qdbs[tpfx]."votes WHERE id='".mysql_real_escape_string($_GET['q'])."' AND ip='$ip'"; 
             $a = $db->_sql($sql);
             $row = $db->fetch_row($a);
             if ($row['ip'] != $ip) {
                 if ($_GET['r'] == 'good') {
                     $sql = "UPDATE ".$_qdbs[tpfx]."quotes SET rating=rating+1 WHERE id='".mysql_real_escape_string($_GET['q'])."'";
                     $a = $db->_sql($sql);
                     $sql = "INSERT INTO ".$_qdbs[tpfx]."votes (id,ip) VALUES ('".mysql_real_escape_string($_GET['q'])."', '".mysql_real_escape_string($ip)."')";
                     $a = $db->_sql($sql);
                 }
                 elseif ($_GET['r'] == 'bad') {
                     $sql = "UPDATE ".$_qdbs[tpfx]."quotes SET rating=rating-1 WHERE id='".mysql_real_escape_string($_GET['q'])."'";
                     $a = $db->_sql($sql);
                     $sql = "INSERT INTO ".$_qdbs[tpfx]."votes (id,ip) VALUES ('".mysql_real_escape_string($_GET['q'])."', '".mysql_real_escape_string($ip)."')";
                     $a = $db->_sql($sql);
                 }
             }
             header("Location: ".$ref);
             break;
    }
...

quote_rate.tpl

[<a href="?do=rate&q=<?php echo $q_id;?>&r=good" title="Rate as good"><b>+</b></a>|<a href="?do=rate&q=<?php echo $q_id;?>&r=bad" title="Rate as bad"><b>-</b></a>]

Edit: fikir POST ile GET yerine geldi this related question.

Oylamak için AJAX kullanarak yani elbette bir AJAX tabanlı çözüm, çok harika olurdu, ben yine de yapmak istiyorum bir şeydir.

0 Cevap