我有注册表单,它在'tblusers'中保存用户信息 - > '用户名',但它不检查用户是否已经存在,所以目前用户可以注册相同的用户名,这是一个巨大的混乱。
所以我需要在注册时检查MySQL数据库中是否有现有的“用户名”。任何想法如何使用PHP - MySQL,甚至是javascript。
这是我在表单提交上执行的代码:
check_token ();
$_SESSION['currency'] = $currency;
$clientid = addclient ($firstname, $lastname, $companyname, $email, $address1, $address2, $city, $state,
$postcode, $country, $phonenumber, $password, $securityqid, $securityqans, $sendemail);
//print "New clientid=" . $clientid . "<br>";
update_query ('tblclients', array ('notes' => $notes, 'status' => $status, 'credit' => $credit, 'salesOperatorId' => $salesOperatorId,
'taxexempt' => $taxexempt, 'latefeeoveride' => $latefeeoveride, 'overideduenotices' => $overideduenotices, 'country' => 'US',
'language' => $language, 'billingcid' => $billingcid, 'lastlogin' => '00000000000000'), array ('id' => $clientid));
//print "New clientid now=" . $clientid . "<br>";
savecustomfields ($clientid, $customfield);
$result = select_query ('tblusers', 'ID', array ('ClientID' => $clientid));
// adding user to the DB at same time as client is being added ...
$datenowtimestamp = date("Y-m-d H:i:s");
$table91 = 'tblusers';
$array91 = array ('ClientID' => $clientid, 'firstname' => $userfirstname, 'lastname' => $userlastname, 'email' => $useremail,
'username' => $username, 'password' => $password, 'searchdelivery' => 'Criminal', 'reporttiming' => 'Instant',
'deliverymethod' => 'email', 'Created' => $datenowtimestamp,
'phonenumber' => $phonenumber, 'orderreports' => 1, 'viewallreports' => 1, 'viewpricing' => 1,
'restrictreportview' => 0, 'gatewayaccess' => 0);
insert_query ($table91, $array91);
if($data = mysql_fetch_array ($result))
$userid = $data['ID'];
$header = 'Location: clientsusers.php?clientid=' . $clientid;
//print $header . "<br>";
header ($header);
exit ();
答案 0 :(得分:4)
执行此操作的正确方法可能是在用户表的username
列中添加唯一索引:
CREATE UNIQUE INDEX username_index ON users (username);
替代方案(检查您的PHP代码)可能会导致两个人同时尝试使用相同的用户名注册。
答案 1 :(得分:1)
当用户在注册时输入用户名时,进行ajax检查以查看用户名是否已存在并通知用户选择其他内容
答案 2 :(得分:1)
当表单在$_POST['username']
中提交时(或者如果你正在使用GET,$_GET['username']
),表格数据可以在任何php脚本中被访问时被访问。从那里,既然你是用户可以注册,我会假设你连接到你的数据库并运行查询。
查询数据库中有多少条目符合$ _POST ['username']。如果大于0,则返回错误,但是您认为合适。
查询看起来像SELECT count(*) FROM dbname WHERE username = $_POST['username']
。当然,有一些准备工作要做,以避免SQL注入,但这将是基本过程。
This book包含您需要了解的有关Web编程基础知识的所有内容,并且是我的Web编程类的文本。