Я управляю сайтом, который использует qdbs 1.10, чтобы предложить базу данных котировок на основе PHP с голосами. Голосование осуществляется через GET, в результате чего боты голосуют по кавычкам случайно. Чтобы избежать этого, я бы хотел преобразовать запросы GET в POST.
Я новичок в PHP и веб-разработке в целом. Можно ли реализовать этот шанс с минимальными знаниями? Есть ли какие-то шаблоны, которым нужно следовать, или у вас есть советы, как это сделать?
(я изменяю robots.txt как временное решение, но это не решает основную проблему.)
Редактировать: Похоже, что это соответствующий раздел кода. Я, конечно, не писал это сам, и я могу только следить за этим, угадывая, что может происходить - я никогда не выучил ни одного слова из PHP.
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>]
Редактировать: Идея заменить GET на POST пришла этот связанный вопрос .
В любом случае я бы хотел использовать AJAX для голосования, поэтому, конечно, было бы неплохо и решение на основе AJAX.