【发布时间】:2011-07-15 12:36:17
【问题描述】:
我有一个 mysql 表,它将存储用户的电子邮件地址(每个都是唯一的,并且是主要字段)和时间戳。
我添加了另一个名为'unique_code' (varchar(64), utf8_unicode_ci) 的列。
我非常感谢您的帮助;
a) 生成 5 位字母数字代码,即:5ABH6
b) 检查“unique_code”列的所有行以确保它是唯一的,否则重新生成并再次检查
c) 将唯一生成的 5 位字母数字代码插入'unique_code' 列,对应于刚刚输入的电子邮件地址。
d) 在屏幕上显示代码。
我必须放什么代码以及放在哪里?
我目前的php如下:
require "includes/connect.php";
$msg = '';
if($_POST['email']){
// Requested with AJAX:
$ajax = ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest');
try{
if(!filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL)){
throw new Exception('Invalid Email!');
}
$mysqli->query("INSERT INTO coming_soon_emails
SET email='".$mysqli->real_escape_string($_POST['email'])."'");
if($mysqli->affected_rows != 1){
throw new Exception('You are already on the notification list.');
}
if($ajax){
die('{"status":1}');
}
$msg = "Thank you!";
}
catch (Exception $e){
if($ajax){
die(json_encode(array('error'=>$e->getMessage())));
}
$msg = $e->getMessage();
}
}
【问题讨论】:
-
5 位字母数字代码意味着您的系统可以包含的唯一代码数量为 60,466,176 个唯一代码。
-
5 字符代码的用途是什么?如果它是电子邮件地址的函数,如何在不使用不同算法的情况下在发生冲突的情况下生成第二个代码?如果没有,为什么简单的自动递增序列号不起作用?
-
为什么需要唯一代码?
-
@thephpdeveloper:这就够了:)
-
@Jim Garrison:添加为引荐来源网址,即:example.com/5ABH6。一旦验证了电子邮件地址(有效的电子邮件并检查它尚不存在),它应该在下一列中分配一个与该用户行关联的唯一代码。
标签: php javascript mysql ajax