Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 新用户提交的某些表单数据与前一用户提交的值重复_Php_Mysql_Sql_Database_Forms - Fatal编程技术网

Php 新用户提交的某些表单数据与前一用户提交的值重复

Php 新用户提交的某些表单数据与前一用户提交的值重复,php,mysql,sql,database,forms,Php,Mysql,Sql,Database,Forms,有一个简单的登记表,用来收集新登记的详细信息。注册脚本的编码非常糟糕,但是对数据的操作却很少: $first_name = stripslashes($_POST['first_name']); $last_name = stripslashes($_POST['last_name']); $foo = stripslashes($_POST['foo']); ... $first_name = mysql_real_escape_string($first_name); $last_name

有一个简单的登记表,用来收集新登记的详细信息。注册脚本的编码非常糟糕,但是对数据的操作却很少:

$first_name = stripslashes($_POST['first_name']);
$last_name = stripslashes($_POST['last_name']);
$foo = stripslashes($_POST['foo']);
...
$first_name = mysql_real_escape_string($first_name);
$last_name = mysql_real_escape_string($last_name);
$foo = mysql_real_escape_string($foo);
...
if(mysql_query(INSERT INTO blessedbirthretreat2015 (first_name, last_name, foo...)
VALUES ('$first_name','$last_name','$foo'...))) {
}
然后发送一封包含用户一些详细信息的电子邮件。但是,使用以前注册的值保存了多个注册,这些值在电子邮件和表中都会收到。该表如下所示:

可以看出,条目12-26对以下字段使用相同的数据:

移动电话varchar16 电子邮件varchar32 地址_1varchar512 邮政编码varchar16 紧急情况名称varchar64 紧急电话号码:varchar16 医疗条件varchar512 以下内容不重复

id int4 名为varchar16 姓瓦查16 性别变量8 出生日期16
我注意到的另一个好奇之处是,所有这些用户的注册电子邮件都是在1-2分钟内收到的——他们不太可能一个接一个地注册。你知道这是怎么发生的吗?

他们找到了一种利用你的脚本的方法,简单的解决方案:让电子邮件地址成为一个唯一的字段,并允许每个用户注册一次,然后他们才有权发送验证电子邮件,任何虚假的电子邮件,如aoifnmoasinfofn@fakeemail.com将无法收到这样的电子邮件,因此无法访问您的网站。这是一种可能性,但此注册是为当地一家小型慈善机构举办的活动,所有数据看起来都是合法的,我很确定这是代码中的一个错误。特别是因为我们在几分钟内注册了十几次,而通常我们在两个月内注册了50次。考虑到数据变化如此之快,我看不出这是一个错误,如果这些注册是合法的,那么就验证这个人是真的。我查看了以前事件的注册,这里有重复数据的大多数注册人过去都参加过,并且在前几年使用了独特的细节进行了申请。不过我打算重写整个剧本,因为它现在一塌糊涂,所以无论如何都需要修改。感谢所有帮助。在表单中插入一个秘密令牌,并在php脚本中检查该秘密令牌。