2017-01-27 19 views
-1

ユーザーが既に存在するかどうか確認したいと思います。 次のコードを作成しましたが、機能しません。 checkUserechoは、if句にジャンプするかどうかを調べるだけです。ユーザー名が既に存在するか確認してください。

$email = $_POST['email']; 
$username = $_POST['username']; 
$password = $_POST['password']; 
$checkUserID = mysql_query("SELECT * 
          FROM users 
          WHERE username = '$username'"); 

if (mysql_num_rows($checkUserID) >= 1) { 
    //echo "User id exists already."; 
    echo "testststst"; 
    $user1 = mysql_fetch_array($checkUserId); 
    $result = flashMessage("User is already taken, please try another one"); 
    //print_r($user); // the data returned from the query 
}else if(empty($form_errors)){ 
...formcheck... 
} 

誰かが私に何をすべきかわからないことを願っています。

+0

これが失敗する唯一の方法は、コード全体が失敗したことです。 –

+1

新しいコードでデータベース拡張子 ** [mysql_'](http://stackoverflow.com/questions/12859942/why-shouldnt-use-mysql-functions-in-php)を使用するたびに[子猫は世界のどこかで絞め殺されている](http://2.bp.blogspot.com/-zCT6jizimfI/UjJ5UTb_BeI/AAAAAAAACgg/AS6XCd6aNdg/s1600/luna_getting_strangled.jpg)**これは廃止され、何年も前から消え去っているこれまでPHP7のために。 PHPを学んでいるだけなら、 'PDO'や' mysqli'データベースの拡張機能や準備した文を学ぶことができます。 [ここから] – RiggsFolly

+0

あなたはデータベース接続を意味しますか?(http://php.net/manual/en/book.pdo.php) –

答えて

0

私はあなたが任意のデータベース接続を行っていないあなたのcode--

  1. について次の問題を見ることができます。

  2. $ _POST変数が使用可能かどうかを確認する必要があります。それはif(isset)関数を使ってチェックしようとしています。

  3. より安全なので、準備文を使用してみてください。

1

私はあなたにPDOライブラリを使用することをお勧めします。問題を解決するには、テーブルのユーザー名をPRIMATY KEYまたはUNIQUE CONSTRAINTにすることをお勧めします。このように、同じユーザー名を2回挿入しようとすると、クエリによって例外がスローされます(または、設定方法によってはfalseが返されます)。

0

最初にすべてのurコードはSQLインジェクションに脆弱です。関数を使用してフォームデータをラップしました。

<?php 

//function to prevent sql injections 
function validateFormData($formData) { 
    $formData = trim(stripslashes(htmlspecialchars(strip_tags(str_replace(array('(', ')'), '', $formData)), ENT_QUOTES))); 
    return $formData; 
} 
$email = validateFormData($_POST['email']); 
$username = validateFormData($_POST['username']); 
$password = validateFormData($_POST['password']); 
$checkUserID = mysql_query("SELECT * 
          FROM users 
          WHERE username = '$username'"); 

if (mysql_num_rows($checkUserID) >= 1) { 
    //echo "User id exists already."; 
    echo "testststst"; 

    while ($row = mysqli_fetch_assoc($checkUserID)){ 
     //set some variables to save some data 
     $usernameD = $row['username']; 


    } 

      //compare form username with db username{ 

    if($usernameD === $username){ 
     echo "Username already taken"; 
    }else{ 

     //continue the rest... 

    } 


} 

?> 
関連する問題