我允许人们提交图片,我需要将他们的提交限制在一天不超过5个。我只需要你的帮助来构建sql代码,因为其余的东西都准备好了。我宁愿不使用基于会话和cookie的解决方案。基于IP的解决方案也不是坚如磐石的,但对我而言,它比其他两个更好。只是因为你知道该网站是建立在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小时内提交后隐藏表单。以下是最终代码的示例。
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>
}
底线:现在必须明白我需要帮助第二个 代码块。因为我甚至不确定我应该使用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;
}
答案 0 :(得分:2)
@gurung您将数据库中的值分配给变量,因此您无法使用COUNT
。请改用:
$count = $wpdb->get_var('SELECT COUNT(*)...');
if ($count > 5) {
...
}
答案 1 :(得分:1)
查询不需要任何其他内容,只需计数即可,检查您的表名“someprefix_limit_uploads”,不要只复制粘贴所有内容。
global $wpdb;
$count = $wpdb->get_var("SELECT COUNT(*) FROM someprefix_limit_uploads WHERE rec_uploader_ip = $uploader_ip AND rec_upload_date = $upload_date;");
var_dump($count);
if($count > 5) {
//rest of code goes here
}