2011-07-26 3 views
0

ユーザーが自分のサイトに登録すると、SQLテーブル/レコードを確認して、登録している電子メールとユーザー名が既に中古。私は私のSQLを確認するために、このような何かを試してみましたSQLでUserNameとEmailを確認し、レコードが存在する場合はエラーメッセージを作成する

//Input Validations 
if($user_name == '') { 
    $errmsg_arr[] = 'Username missing'; 
    $errflag = true; 
} 
if($user_password == '') { 
    $errmsg_arr[] = 'Username Password missing'; 
    $errflag = true; 
} 
if($insp_name == '') { 
    $errmsg_arr[] = 'Inspector Name missing'; 
    $errflag = true; 
} 
if($insp_email == '') { 
    $errmsg_arr[] = 'Inspector Email missing'; 
    $errflag = true; 
} 
if($confirm_password == '') { 
    $errmsg_arr[] = 'Confirm Password missing'; 
    $errflag = true; 
}  

if ($user_password != $confirm_password) { 
     $errmsg_arr[] = 'The password which you have entered do not match'; 
    $errflag = true; 
    } 

//If there are input validations, redirect back to the registration form 
if($errflag) { 
    $_SESSION['ERRMSG_ARR'] = $errmsg_arr; 
    session_write_close(); 
    header("location: accountinfo.php"); 
    exit(); 
} 

$result=mysql_query("SELECT email FROM members WHERE `email` = '$insp_email'"); 
$exist = mysql_fetch_row($result); 
    if ($exist == 1) { 
     $errmsg_arr[] = 'That email is already registered.'; 
    $errflag = true; 
     } 

かかわら動作しません。以下は、私はフィールドのいずれかが空白のままされている場合、エラーを返すために使用するコードです。私はそれがおそらく簡単な解決策であることを知っている、私はちょうどそれが笑を見ることができません。私が望むのは、sqlで電子メールとユーザー名を確認することです。それらの2つがすでにsqlに存在する場合、登録ページにリダイレクトして、「その電子メールまたはユーザー名はすでに使用されています」というメッセージを表示します。

ありがとう!

オクラホマ私はそれを今働いており、それは私が欲しいものです。しかし、私が気付いたもう一つの問題は、登録ページにリダイレクトされたときにエラー(空白フィールド、ユーザー名はすでに使用中)がある場合、エラーを表示しない理由、またはユーザーが登録ページに戻された理由を説明することです。ここでもその部分のための私のコードは以下の通りです:結果は= 0その後、組み合わせが存在しない場合はそれ以外の場合はそれがない、

select count(*) from yourtable where username = 'jimmy' and email = '[email protected]'; 

//If there are input validations, redirect back to the registration form 
if($errflag) { 
$_SESSION['ERRMSG_ARR'] = $errmsg_arr; 
session_write_close(); 
header("location: accountinfo.php"); 
exit(); 
} 

答えて

1
$result=mysql_query("SELECT email FROM members WHERE `email` = '$insp_email' or username='$username' LIMIT 1"); 
$exist = mysql_fetch_row($result); 
    if ($exist !==false) { 
     $errmsg_arr[] = 'That email is already registered.'; 
    $errflag = true; 
     } 
0

はこのような何かを試してみてください。

ただし、複数のユーザーに同じユーザー名を使用させたくないため、ユーザー名を確認するのが最も一般的です。もしそうなら

、あなたは上記のようにそれを行うが、使用ORことができます。このことができます

select count(*) from yourtable where username = 'jimmy' or email = '[email protected]'; 

希望を!

EDIT

また、ユーザー名欄やメール欄にユニーク制約を課すことができますし、重複したレコードを挿入しようとすると、それが投げると、エラーになります。その後、エラーを処理できます。 UIを使用せずに重複したレコードが作成されないようにするために、上記に加えてこれを行う必要があります。

0

mysql_num_rowsを使用します。

http://php.net/manual/en/function.mysql-num-rows.php

if (mysql_num_rows($result) > 0) 
{ 
    $errmsg_arr[] = "That email is already registered."; 
    $errflag = true; 
    etc... 

そしてまた、YOUTは実際にあなたがSQLインジェクションに対してコーディング確保を検討すべきいくつかの入力検証をやろうとして以来。

http://php.net/manual/en/function.mysql-real-escape-string.php

使用したり、句は、電子メールとユーザー名の両方をチェックするためにWHEREインチ

$result = mysql_query("SELECT email FROM members WHERE `email` = '$insp_email' OR `username` = '$user_name'");
関連する問題