2012-01-31 3 views
0

У меня есть регистрационная форма, которая сохраняет информацию о пользователе в 'tblusers' -> 'Username', но не проверяет, существует ли пользователь уже, поэтому на данный момент пользователи могут зарегистрироваться с одинаковыми имена пользователей, что является огромным беспорядком.Проверить базу данных для существующих имен пользователей

Поэтому мне нужно проверить базу данных MySQL для существующего «Username» при регистрации. Любая идея, как это сделать с 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(); 
+1

Для этого вы должны использовать серверный язык; пользователи могут обойти Javascript. –

+0

Если вы проверяете по вызову AJAX, вам все равно нужно выполнить проверку на стороне сервера. –

+1

Если какой-либо из этих ответов полезен, пожалуйста, примите одно из них. –

ответ

4

Правильный способ сделать это, вероятно, путем добавления уникальных индексов на вашем username колонке в вашей таблице пользователей:

CREATE UNIQUE INDEX username_index ON users (username); 

Альтернатива (проверка вашего PHP-кода) может вызвать проблемы с двумя людьми, которые пытаются зарегистрировать одно и то же имя пользователя одновременно.

+0

Это что-то, что я могу сделать в MySQL Admin, если да, то как? – Drazek

+0

И, конечно, проверьте, доступно ли имя пользователя, прежде чем пытаться сохранить запись в БД. – dfsq

+0

Работает как очарование! – Drazek

1

, когда пользователь вводит имя пользователя при регистрации, сделайте АЯКС проверку, чтобы увидеть, если имя пользователя уже существует, и уведомляет пользователя, чтобы выбрать что-то другое

+0

Это должно сочетаться с верным решением сервера. –

1

Когда форма данные доступны в любой PHP скрипт запускается на выполнение, когда форма представленный в a, имеет $_POST['username'] (или если вы используете GET, $_GET['username']). Оттуда, так как вы можете зарегистрироваться, я предположим, что вы подключаетесь к своей БД и выполняете запросы.

Запросить базу данных о том, сколько записей соответствует $ _POST ['username']. Если если больше 0, верните ошибку, как вы считаете нужным.

Запрос будет выглядеть примерно как SELECT count(*) FROM dbname WHERE username = $_POST['username']. Конечно, есть некоторая подготовительная работа, чтобы избежать SQL-инъекции, но это будет основной процесс.

This book имеет все, что вам нужно знать об основах веб-программирования, и был текстом для моего класса веб-программирования.