0

我允许人们提交图像,并且我需要将他们的提交限制在一天内不超过 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 小时内提交 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>
} 

底线:现在必须很明显,我需要第二个代码块的帮助。因为我什至不确定我应该使用 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;
}
4

2 回答 2

2

@gurung 您将数据库中的值分配给变量,因此您不能使用COUNT. 改用这个:

$count = $wpdb->get_var('SELECT COUNT(*)...');
if ($count > 5) {
    ...
}
于 2013-11-06T07:54:40.467 回答
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
   }
于 2013-11-06T07:48:50.500 回答