Ich betreibe eine Website, die qdbs 1.10 verwendet, um eine PHP-basierte Angebotsdatenbank mit Votes anzubieten. Die Abstimmung wird über GET durchgeführt, was dazu führt, dass Bots aus Versehen über Zitate abstimmen. Um dies zu vermeiden, möchte ich die GET-Anfragen in POSTs konvertieren.Konvertieren von GET zu POST, um zu vermeiden, dass Bots Stimmen vermasseln
Ich bin ein Neuling bei PHP und Web-Entwicklung im Allgemeinen. Ist es möglich, diese Chance mit minimalem Wissen zu erfüllen? Gibt es irgendwelche Muster zu folgen, oder haben Sie einige Hinweise, wie es geht?
(Ich ändere robots.txt als vorübergehende Lösung, aber dies das zugrunde liegende Problem nicht lösen.)
Edit: Dies ist der relevante Abschnitt des Codes zu sein scheint. Ich habe das natürlich nicht selbst geschrieben, und ich kann es nur nachvollziehen, indem ich rate, was passieren könnte - ich habe nie ein Wort von PHP gelernt.
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: Die Idee mit POST this related question kam zu ersetzen GET.
Mit AJAX zu stimmen ist etwas, das ich sowieso gerne machen würde, also wäre natürlich auch eine AJAX-basierte Lösung großartig.
Können Sie uns den aktuellen PHP-Code zur Verfügung stellen?Es sollte einfach genug sein, es von GET zu POST –
zu ändern, es ist keine PHP-Frage. GET to POST-Konvertierung wird im HTML-Code vorgenommen. Gehe zu Abbildung –
Es ist eine PHP-Frage, da er den PHP-Code auch bearbeiten muss, um das $ _POST-Feld und nicht das $ _GET-Feld zu lesen. –