2016-12-13 7 views
0

私はPHP、mysqlログインスクリプトを作成しようとしています。間違ったユーザー名やパスワードやログインIDを入力すると、エラーメッセージが表示されません。どうして?php mysql、ログインスクリプト。私のエラーメッセージは表示されません

$con = mysqli_connect($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME); 
if (mysqli_connect_errno()) { 
    die ('Failed to connect to MySQL: ' . mysqli_connect_error()); 
} 
$c_id = $_POST['c_id']; 
$p_nickname = $_POST['p_nickname']; 
$p_password = $_POST['p_password']; 
if(!empty($c_id)&&!empty($p_nickname)&&!empty($p_password)){ 
    $query = "SELECT c_id, p_nickname, p_password FROM people_inside_company INNER JOIN company ON pic_c_id = c_id INNER JOIN people ON pic_code_number = p_code_number WHERE c_id = '$c_id' AND p_nickname = '$p_nickname' AND p_password = '$p_password'"; 
    #t 
    if($result = mysqli_query($con, $query)or die(mysqli_error($con))){ 
     if($row = mysqli_fetch_assoc($result)){ 
      $in_cid = $row['c_id']; 
      $in_pnickname = $row['p_nickname']; 
      $in_ppassword = $row['p_password']; 
      $count = mysqli_num_rows($result); 
      if($count == 1){ 
       echo "you're in"; 
       # i get this when i type the right c_id, p_nickname and p_passowrd 
       #more code 
      } 
      else{ 
       echo "wrong username, password or id"; 
       # i don't get this when im typing the wrong c_id, p_nickname or p_password, why? 
      } 
     } 
    } 
} 
+1

「あなたはいますか? – Akshay

+0

私は正しいニックネームとパスワードを書き、c_idはい、間違って入力すると何も表示されません – Avoka94

+0

パラメータ化されたクエリを使用し、ユーザーのパスワードをハッシュします。 – chris85

答えて

0

使用このコード:

$con = mysqli_connect($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME); 
if (mysqli_connect_errno()) { 
    die ('Failed to connect to MySQL: ' . mysqli_connect_error()); 
} 
$c_id = $_POST['c_id']; 
$p_nickname = $_POST['p_nickname']; 
$p_password = $_POST['p_password']; 
if(!empty($c_id)&&!empty($p_nickname)&&!empty($p_password)){ 
    $query = "SELECT c_id, p_nickname, p_password FROM people_inside_company INNER JOIN company ON pic_c_id = c_id INNER JOIN people ON pic_code_number = p_code_number WHERE c_id = '$c_id' AND p_nickname = '$p_nickname' AND p_password = '$p_password'"; 
    #t 
    if($result = mysqli_query($con, $query)or die(mysqli_error($con))){ 

     if(mysqli_num_rows($result)){ 
      $row=mysqli_fetch_assoc($result); 
      $in_cid = $row['c_id']; 
      $in_pnickname = $row['p_nickname']; 
      $in_ppassword = $row['p_password']; 
      $count = mysqli_num_rows($result); 
      if($count == 1){ 
       echo "you're in"; 
       # i get this when i type the right c_id, p_nickname and p_passowrd 
       #more code 
      } 

     } 
     else 
     { 
       echo "wrong username, password or id"; 
       # i don't get this when im typing the wrong c_id, p_nickname or p_password, why? 
      } 

    } 
} 

あなたの "他" ブロック(論理的に)

+0

ありがとう、これは動作します! :D – Avoka94

+0

@OlleNorström。更新されたコードを使用し、私の答えを投票してください。最新の更新コードを使用してください – kashif

0

私は入力のいずれかが間違っている場合、それは本当に何も表示されませんので、if条件の結果は、falseになりますので、あなたがif条件内mysqli_queryを置くべきではないと思います。

はこれをやってみてください。

$con = mysqli_connect($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME); 
if (mysqli_connect_errno()) { 
    die ('Failed to connect to MySQL: ' . mysqli_connect_error()); 
} 
$c_id = $_POST['c_id']; 
$p_nickname = $_POST['p_nickname']; 
$p_password = $_POST['p_password']; 
if(!empty($c_id)&&!empty($p_nickname)&&!empty($p_password)){ 
    $query = "SELECT c_id, p_nickname, p_password FROM people_inside_company INNER JOIN company ON pic_c_id = c_id INNER JOIN people ON pic_code_number = p_code_number WHERE c_id = '$c_id' AND p_nickname = '$p_nickname' AND p_password = '$p_password'"; 
    $result = mysqli_query($con, $query)or die(mysqli_error($con)); 
    if(mysqli_num_rows($result) > 0) { 
     while ($row = mysqli_fetch_assoc($result)) { 
      $in_cid = $row['c_id']; 
      $in_pnickname = $row['p_nickname']; 
      $in_ppassword = $row['p_password']; 
     } 

     echo "you're in"; 
    } 
    else{ 
     echo "wrong username, password or id"; 
    } 
} 

あなたはユーザー入力で任意のデータベーストランザクションをやっている場合は、このコードで、あなたがSQL injectionの原因となっているためまた、あなたはprepared statementsを使用する必要があります。

1

到達不能だったあなたレコードが空になると、それは内部に行くことはありません

$con = mysqli_connect($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME); 
if (mysqli_connect_errno()) { 
    die('Failed to connect to MySQL: ' . mysqli_connect_error()); 
} 
    $c_id = $_POST['c_id']; 
    $p_nickname = $_POST['p_nickname']; 
    $p_password = $_POST['p_password']; 

if (!empty($c_id) && !empty($p_nickname) && !empty($p_password)) { 

$query = "SELECT c_id, p_nickname, p_password FROM people_inside_company INNER JOIN company ON pic_c_id = c_id INNER JOIN people ON pic_code_number = p_code_number WHERE c_id = '$c_id' AND p_nickname = '$p_nickname' AND p_password = '$p_password'"; 
$result = mysqli_query($con, $query); 
$row = mysqli_fetch_assoc($result); 

$in_cid = $row['c_id']; 
$in_pnickname = $row['p_nickname']; 
$in_ppassword = $row['p_password']; 

if (mysqli_num_rows($result) > 0) { 
    echo "you're in"; 
} else { 
    echo "wrong username, password or id"; 
} } 
0

この方法を試してみてください。ループ、エラーメッセージが表示されませんでした。

$con = mysqli_connect($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME); 

if (mysqli_connect_errno()) { 
    die ('Failed to connect to MySQL: ' . mysqli_connect_error()); 
} 

$c_id = $_POST['c_id']; 
$p_nickname = $_POST['p_nickname']; 
$p_password = $_POST['p_password']; 

if(!empty($c_id)&&!empty($p_nickname)&&!empty($p_password)){ 
    $query = "SELECT c_id, p_nickname, p_password FROM people_inside_company INNER JOIN company ON pic_c_id = c_id INNER JOIN people ON pic_code_number = p_code_number WHERE c_id = '$c_id' AND p_nickname = '$p_nickname' AND p_password = '$p_password'"; 

    if($result = mysqli_query($con, $query)or die(mysqli_error($con))){ 
     $row = mysqli_fetch_assoc($result); 
     $count = mysqli_num_rows($result); 

     if($count == 1){ 
     $in_cid = $row['c_id']; 
     $in_pnickname = $row['p_nickname']; 
     $in_ppassword = $row['p_password']; 
      echo "you're in"; 
      # i get this when i type the right c_id, p_nickname and p_passowrd 
      #more code 
     } 
     else{ 
     echo "wrong username, password or id"; 
     # i don't get this when im typing the wrong c_id, p_nickname or p_password, why? 
     } 
    } 
} 
関連する問題