2017-08-19 14 views
0

何らかの理由で私の準備文が行やログインを返さないようですが、入力されたパスワードとユーザ名が正しいと確信しています。準備ステートメントを使わずにコードを実行すると、システムがログインします。なぜ私の準備ステートメントが機能していないのか、あるいは使用すべき他の方法があるのか​​知りませんか?私の準備文はなぜ機能しないのですか?

<?php session_start(); ?> 
<!DOCTYPE html> 
<html> 
<head> 
    <title>Logged in</title> 
</head> 
<body> 
    <?php 

     $user=$_GET["username"]; 
     $pass=$_GET["password"]; 


     $servername="localhost"; 
     $username="root"; 
     $password=""; 
     $dbName="db_artzytest"; 

     $conn=new mysqli($servername, $username, $password, $dbName); 

     if($conn->connect_error){ 
      echo $conn->connect_error; 
      die("connection to server not found"); 
     }else{ 
      echo "connection established"; 
     } 
     ///finds account with matching login info 
     $sql="SELECT * FROM db_users WHERE username='{$user}' AND password='{$pass}' "; 


     $sql="SELECT * FROM db_users WHERE username = ? AND password = ?"; 


     try{ 
      $stmt = $conn->prepare($sql); 
      $stmt->bind_param("ss", $user, $pass); 
      $stmt->execute(); 
     }catch(Exception $e){ 
      die("prepare failed: " . $e); 
     } 
     echo 'here'; 
     //$result = $stmt->store_result(); 

     printf("Number of rows: %d. \n", $stmt->num_rows); 

     //$result=$conn->query($sql); 
     echo 'here'; 
     if(mysqli_num_rows($result) > 0){ 

      while($row=mysqli_fetch_assoc($result)){ 
       //only logs in if the account is activated 
       if($row["isActivated"]==1){ 

        $_SESSION["currentUser"]=$user; 
        $_SESSION["currentId"]=$row["id"]; 
        $_SESSION["currentPass"]=$pass; 

        //header('Location: ../ProfilePage/profilePage.php'); 
        header('Location: ../Content/displayGroup.php?group=general'); 
       }else{ 
        $_SESSION["m_Login"]="Unverified Account. Check your email to verify."; 
        header('Location: Login.php'); 
       } 
      } 
      /* 
      $sql=" SELECT * FROM table_images WHERE userid = {$_SESSION["currentId"]} "; 

      $result=$conn->query($sql); 

      if(mysqli_num_rows($result) > 0){ 
       while($row=mysqli_fetch_assoc($result)){ 
        echo "<img style='height: 10vh; width: 10vw;' src='../../images/{$row["id"]}.jpg' />"; 
        echo "{$row["imageName"]}</br>"; 
       } 
      } 
      */ 

     }else{ 
      $_SESSION["m_Login"]="password or username incorrect {$user} {$pass}" . var_dump(mysqli_stmt_get_result($stmt)); 
      header('Location: Login.php'); 
      echo "no user found"; 
     } 

    ?> 
</body> 
</html> 
+1

Javaはどこですか? – Script47

+0

基本的なデバッグ: '$ _GET'が' $ _POST 'でないこと、そしてそのデータが渡されていることを確認してください。なぜあなたは '$ sql'を定義してすぐにそれを疑問符のパラメータで再定義しますか?エラーを防ぐには、常に 'header'で' exit'を使います。 – Script47

答えて

0

OOとprocdeuralを混在させているので、コードが意図したとおりに実行されない原因となっていると想定します。

ドキュメントの状態:

手続きのみスタイル:mysqli_queryによって返される結果セット識別子()、mysqli_store_result()またはmysqli_use_result()。問題を修正する必要があります

変更、

if(mysqli_num_rows($result) > 0){ 

に、

if($stmt->num_rows($result) > 0) { 

+0

ああ、申し訳ありませんが、私のコードはちょっと混乱しています。$結果変数は、準備文なしのログインコードから残されていました。 $結果を今までに設定する必要はありますか? – user2350459

関連する問題