簡體   English   中英

檢查數據庫中的現有用戶名

[英]Check Database for Existing Usernames

我有一個注冊表格,該表格將用戶信息保存在'tblusers'->'Username'中,但是它不會檢查用戶是否已經存在,因此目前用戶可以使用相同的用戶名進行注冊,這很麻煩。

因此,我需要在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 ();

正確的方法可能是通過在用戶表的username名列中添加唯一索引:

CREATE UNIQUE INDEX username_index ON users (username);

另一種方法(簽入PHP代碼)可能會導致兩個人試圖同時使用相同的用戶名進行注冊。

當用戶在注冊時輸入用戶名時,進行ajax檢查以查看用戶名是否已存在,並通知用戶選擇其他內容

當以$_POST['username'] (或如果使用GET時, $_GET['username'] )提交表單時,無論使用什么php腳本執行表單數據都可以訪問該數據。 從那里,由於您是用戶,可以注冊,所以我假設您連接到數據庫並運行查詢。

在數據庫中查詢與$ _POST ['username']相匹配的條目數。 如果大於0,則返回錯誤,但您認為合適。

該查詢看起來類似於SELECT count(*) FROM dbname WHERE username = $_POST['username'] 當然,需要做一些准備工作以避免SQL注入,但這將是基本過程。

本書包含了您需要了解的有關Web編程基礎知識的所有知識,並且是我的Web編程課程的課文。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM