2017-06-23 8 views
-4

私はユーザ認証スクリプトを作りたいと思います。ここでは、ユーザーがサインアップしたい場合は、彼/彼女は、登録フォームに記入しなければならないとクリック"if"が動作しているか "else"が動作しています

を「登録」しますPHP

<?php 
$usrnm=$_POST["userName"]; 
$email=$_POST["mailID"]; 
$pwd=$_POST["Password"]; 
$firstName=$_POST["firstName"]; 
$lastName=$_POST["lastName"]; 
$confpwd=$_POST["ConfirmPassword"]; 
if ($pwd == $confpwd) 
{ 
if (!$con = @mysql_connect("localhost", "root","","login")) 
{ 
echo "connection unsuccessful\n"; 
} 
if (!$selectdb = mysql_select_db("login",$con)) 
{ 
echo "database selection unsuccessful\n"; 
} 
$sql = "SELECT userName FROM userdetails WHERE userName='$usrnm'"; 
$sql2 = "INSERT INTO userdetails (userName, Password,mailID, firstName, 
lastName) VALUES ('$usrnm','$pwd','$email','$firstName','$lastName')"; 
$retval = mysql_query($sql, $con); 
while($row = mysql_fetch_row($retval)) 
{ 

フィールドの数が0以上であれば、これがあることを意味Usernameはすでにデータベースに存在し、ELSEはその情報をデータベースに追加します。私の問題は、ELSE条件が機能しておらず、IFが機能しているということです。私はISSETを使ってみましたが、まだ運がありません。

$fields=mysql_num_fields($retval); 
if ($fields>0) 
{echo "Username already exists";} 
else 
{$retval2 = mysql_query($sql2, $con); 
echo "Information added"; 
} 
} 
} 
} 
else 
{ 
echo "Opps..."; 
} 
mysql_close($con); 
?> 
+0

「mysql()」着信についてのコメント mysqli()または「PDO」を使用してください。また、あなたの入力を検証してください。 – TripleDeal

+5

あなたは[古い**データベースAPI](http://stackoverflow.com/q/12859942/19068)を使用していますので、[最新の置き換え](http://php.net/manual/en /mysqlinfo.api.choosing.php)、** [SQLインジェクション攻撃](http://bobby-tables.com/)に**脆弱です**現代のAPIは、[防御](http: /stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)に対して。あなたは[不適当なハッシングアルゴリズム](http://php.net/manual/en/faq.passwords.php)を使用していますので、[注意が必要です](https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet)。 – Quentin

+2

インデントを処理してください。このコードは事実上読めません。 – deceze

答えて

0

elseステートメントの近くに1つの余分な中かっこがあります。

if ($pwd == $confpwd){ 
    if (!$con = @mysql_connect("localhost", "root","","login")){ 
     echo "connection unsuccessful\n"; 
    } 
    if (!$selectdb = mysql_select_db("login",$con)){ 
     echo "database selection unsuccessful\n"; 
    } 
    $sql = "SELECT userName FROM userdetails WHERE userName='$usrnm'"; 
    $sql2 = "INSERT INTO userdetails (userName, Password,mailID, firstName, lastName) VALUES ('$usrnm','$pwd','$email','$firstName','$lastName')"; 
    $retval = mysql_query($sql, $con); 
    while($row = mysql_fetch_row($retval)){ 
     $fields=mysql_num_fields($retval); 

     if ($fields>0){ 
      echo "Username already exists"; 
     } else { 
      $retval2 = mysql_query($sql2, $con); 
      echo "Information added"; 
     } 
    } 
} else { 
    echo "Opps..."; 
} 
mysql_close($con); 

私はそれをテストしていないも私はそれをやりたいか、あなたが真剣にmysqli()またはPDO()のいずれかを使用する必要があるため、あなたは間違いなく検証する必要があります。ここでは

はあなたのコードのクリーンアップバージョンですユーザーの入力。

+0

@Quentin情報をありがとう。これは、データベースと検索と検索のツールを同じものにするのは初めてのことです。また、私の主な問題は、クエリが独立して完全にうまく動作していることですが、スクリプト内で、ユーザー名がまだ存在しない場合は、-ELSEを介して情報を追加する必要があります。しかし、これはまだ起こっていません。 (初めてのStackoverflowを使用) –

+0

情報ありがとうございます。これは、データベースと検索と検索のツールを同じものにするのは初めてのことです。また、私の主な問題は、クエリが独立して完全にうまく動作していることですが、スクリプト内で、ユーザー名がまだ存在しない場合は、-ELSEを介して情報を追加する必要があります。しかし、これはまだ起こっていません。 PS。最初にstackoverflowを使用する –

+0

@deceze私は初めてstackoverflowを使用しています。私のコードはすでに字下げされていますが、各行の前に "4 space before"をコピーして保持している間に、それはうんざりです。 –

0

私はクエリを書いた方法も間違っていると思います。あなたは文字列を使用していますので、以下の形式でクエリを記述してください。

$sql = "SELECT userName FROM userdetails WHERE userName='".$usrnm."'"; 

$sql2 = "INSERT INTO userdetails (userName, Password,mailID, firstName, lastName) VALUES('".$usrnm."','".$pwd."','".$email."','".$firstName."','".$lastName."')"; 

また、else文の後ろに余分な閉じ括弧を使用しています。それを削除してください。

+0

こんにちはChandan、 私のクエリは個別に動作していますが、2番目のクエリ(INSERT)を実行するELSEの近くに何も起こっておらず、情報が加算器でもデータベースに追加されていないということもありません。 –

+0

私のマシン上でコードをシミュレートできるように、あなたのスキーマを質問で共有できますか? –

+0

こんにちは、助けていただきありがとうございます。申し訳ありませんが、ドキュメントをアップロードするオプションを検索しようとしています。だから、私は自分のCSVデータを共有しました。 ファイルを添付できるかどうかはわかります。 アミット\t amit123 \t [email protected] \tアミット\t L1 Shrini \t shrini123 \t [email protected] \t shrini \t L2 デビッド\t david123 \t [email protected] \tデビッド\t L3 ジョー\t joe123 \t [email protected] \tジョー\t L4 デーン\t dane123 \t [email protected] \tデーンテイラー\tテイラー123 \tテイラー@ tmp.com \tテーラー\t 16 –

関連する問題