投票でPHPベースの引用データベースを提供するqdbs 1.10を使用するサイトを実行しています。投票はGETによって実行され、ボットには偶然にも引用符で投票されます。これを避けるために、GET要求をPOSTに変換したいと思います。ボットの台無しの投票を防ぐためにGETをPOSTに変換する
私はPHPの完全な初心者であり、一般的なWeb開発です。最小の知識でこのチャンスを実行することは可能ですか?何かパターンがありますか、それを行う方法についていくつかのヒントがありますか?
は(私は一時的な解決策としての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>]
編集:POSTとGET交換するアイデアはthis related questionを来ました。
投票にAJAXを使用すると、とにかくやってみたいことです。もちろん、AJAXベースのソリューションも素晴らしいでしょう。
現行のPHPコードを提供できますか?それはGETからPOSTに変更するのに十分なはずです –
PHPの質問ではありません。 GETからPOSTへの変換はHTMLコードで行われます。 Go figure –
$ _GETフィールドではなく$ _POSTフィールドを読むためにPHPコードを編集する必要があるので、PHPの質問です。 –