小编rpa*_*pat的帖子

防止机器人进行表单提交

在我的网站上,我提供了一个供访问者输入的表单。无需登录。我不能要求登录。所以任何浏览网站的人都可以提交表单。它还向机器人打开了表单。我需要阻止机器人。我在以下线程上问过这个问题。

来自机器人的不需要的垃圾输入?

我确实得到了一些有用的回应。我阅读了一些解决方案(验证码和非验证码)。

我的网站不是我获得大量流量的网站。我的用户并不是非常精通计算机。所以我正在考虑做这样的事情。我不是一个很有成就的程序员,我在这里说的话可能非常愚蠢。但我只是想学习,所以请耐心等待。

每次提交表单时,我都会生成一个唯一的密钥(unix 时间 + 远程主机 IP)。我将密钥存储在 db 表中,然后发送表单,密钥是表单上的隐藏字段。提交表单时,我会检查该键的值是否在 db 表中。如果是,我从 db 表中删除键并处理表单。如果键不在 db 表中,我会丢弃该表单并要求用户再次执行操作。

每次提交时,我还会删除陈旧的条目(用户未在规定时间内提交表单)。我需要有一些机制来阻止机器人对表单的请求。例如,如果我有来自特定主机的 n 个待处理请求,我会要求人们在几分钟后请求该表单。

这样的事情会起作用吗?

security

5
推荐指数
1
解决办法
3871
查看次数

在实时数据库上运行mysqldump

只想知道在实时数据库上运行mysqldump有什么风险?有没有数据库损坏的机会?mysqldump似乎锁定了整个数据库。

mysql

5
推荐指数
1
解决办法
9722
查看次数

编译错误 - com.mysql.jdbc.Driver无法解析为变量

我对预先捆绑的STS几乎不熟悉.我正在Fedora 17上的Eclipse/Spring中试用JDBC for MySQL

下载了mysql JDBC驱动程序(mysql-connector-java-5.1.22-bin.jar).然后在IDE中

  1. 创建了一个项目并将其命名为JDBC
  2. 在项目下创建了一个名为"lib"的文件夹
  3. 去项目>属性.选择Java Build Path,然后选择'Libraries'选项卡.点击'Add Jars'Selected JDBC> lib> mysql --- .jar并点击OK.这在Project Explorer窗格下添加了一个'Referenced Libraries',在其下我看到了mysql jar文件.
  4. 在项目下写了下面的代码

我觉得我已经完成了编译所需的工作.但是,我看到了

Class.forName(com.mysql.jdbc.Driver);

com.mysql.jdbc.Driver无法解析为变量

你能告诉我这里有什么不对吗?

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;


    public class TestJDBC {

        /**
         * @param args
         */
        public static void main(String[] args)  throws Exception{
            // TODO Auto-generated method stub
            Connection connection = null;
            Statement statement = null;
            PreparedStatement preparedStatement = null;
            ResultSet resultSet = null;
            try {
                Class.forName(com.mysql.jdbc.Driver);
                connection = DriverManager.getConnection("jdbc:mysql://localhost/testdb?" …
Run Code Online (Sandbox Code Playgroud)

java eclipse jdbc

5
推荐指数
1
解决办法
2万
查看次数

我错误地编码了吗?

几十年前我做了一些C编程.我正在尝试重新学习这门语言.我写了这个.我得到了意想不到的东 当我将'short int'更改为'int'时,它似乎有效.任何人都可以查看我的代码,看看它是否有任何问题,或者这是一个编译器问题.我在Linux上使用gcc.

#include <stdio.h>

int main(void) {

    short int age = 0;
    short int num_1_yr_olds = 0;
    short int num_2_and_3_yr_olds = 0;
    short int num_above_3_yr_olds = 0;

    while(1) {

        printf ("Enter age: ");
        scanf ("%d", &age);

        if (age < 1) {
            break;
        }

        switch (age) {
            case 1:
                ++num_1_yr_olds;
                break;
            case 2:
            case 3:
                ++num_2_and_3_yr_olds;
                break;
            default:
                ++num_above_3_yr_olds;
                break;
        }
    }
    printf ("Number of 1 year olds = %d\n", num_1_yr_olds);
    printf ("Number of 2 and 3  year olds = …
Run Code Online (Sandbox Code Playgroud)

c gcc

2
推荐指数
1
解决办法
125
查看次数

标签 统计

c ×1

eclipse ×1

gcc ×1

java ×1

jdbc ×1

mysql ×1

security ×1