私は人々が画像を提出することを許可しており、彼らの提出を 1 日に 5 つまでに制限する必要があります。残りの準備が整っているので、SQLコードを作成するためにあなたの助けが必要です。セッションと Cookie に基づくソリューションは使用したくありません。IPベースのソリューションも堅実ではありませんが、私にとっては問題なく、他の2つよりも優れています. このサイトは wordpress で構築されており、mysql については何も知りません。
編集:私はすでにEFFORTS UPDATEで以下のコードを構築しようとしています。ご覧ください。
これが私がやっていることです:私はすでにmysqlにこの関数用のsomeprefix_limit_uploadsという名前のテーブルを持っています。フォームを初めて使用する人の IP と日付をログに記録し、フォームの送信時にデータベースに保存します。隠しフィールドの例 - を使用し<input type="hidden" name="uploader_ip" value="<?php echo $uploader_ip;?>"/>
ます。次に、wordpress を使用しているため、以下のような値をテーブルに挿入します。コードは次のようになります。
global $wpdb;
require_once('../../../wp-load.php');
$upload_date = strip_tags($_POST['upload_date']);
$uploader_ip = strip_tags($_POST['uploader_ip']);
$table_name = $wpdb->someprefix . "limit_uploads";
$wpdb->insert( $table_name, array(
'rec_upload_date' => $upload_date,
'rec_uploader_ip' => $uploader_ip
));
ここで私はどこに行き詰まっていますか:フォームを含むページのコードについては、フォームを でラップする必要がありif_statement
ます。基本的に、スクリプトは 24 時間以内に 5 回送信された後、フォームを非表示にする必要があります。最終的なコードがどのように見えるかの例を次に示します。
global $wpdb;
$results = $wpdb->get_results("COUNT xyz xyz xyz xyz xyz xyz xyz xyz xyz ");
if(//there are more than 5 submits from same ip on same day) {
echo "no more than 5 uploads allowed.";
} else {
<form id="upload-images" action="" method="POST">
//contents of the form
</form>
}
結論: コードの 2 番目のブロックについて助けが必要であることは明らかです。COUNT または SELECT を使用する必要があるかどうかさえわからないので、使用する場合はどうすればよいでしょうか。ここで少し助けていただければ幸いです。また、私のアプローチに何か問題がある場合は指摘してください。
努力の更新:
SQLクエリは次のようにする必要があると思いますが、いくつかの要素が欠落しています:
SELECT COUNT(*) **missing_some_code_here**
FROM someprefix_limit_uploads
WHERE rec_uploader_ip = $uploader_ip;
AND rec_upload_date = $upload_date;
そしてマイページで
if (**missing_some_code_here** > 5) {
echo "no more than 5 uploads allowed.";
return;
}