2016-03-30 19 views
1

これはログインPHPコードですがログインできません。 私のコードはecho "2"まで動作しますが、もう動作しません。データベースのここは、PHPを使用してデータベースにログインできません

include 'inc.config.php'; 
if(isset($_POST["submit"])) 
{ 
    $user = mysql_real_escape_string($_POST['emailid']); 
    $pass = md5(mysql_real_escape_string($_POST['password'])); 
    $query=mysql_query("SELECT * FROM logsignup WHERE email='$user' AND password='$pass' "); 

    echo "1"; 

    $numofrows = mysql_num_rows($query); 

    echo "2"; 

    if($numofrows!=0)  
    { 
     echo "3"; 

     while($row=mysql_fetch_assoc($query)) 
     { 
      $dbusername= $row['emailid']; 
      $dbpassword= $row['password']; 
     } 

     if($user=$dbusername && $pass=$dbpassword) 
     { 
      echo "loggedin"; 
     } 
    } 
    else 
    { 
     echo "invalid"; 
    } 
} 

がinc.config.phpファイルです

$con = mysql_connect("localhost","root",""); 
$select=mysql_select_db("loginsignup"); 

画像:

Image of the database

+0

エラーメッセージが表示されますか? – Elymentree

+3

あなたのコードは非難されています( 'mysql_ *'関数)。あなたのコードは素晴らしいSQLインジェクションのために開いています。違反しているハッシュ方法を使用しています。これは常に 'true'となります。' if($ user = $ dbusername && $ pass = $ dbpassword) ' – Daan

+1

pls check echo $ numofrows; resultが0の場合、データベースエントリをチェックします。 –

答えて

2
  • MySQLiのに更新し、mysql_は今deprecatedあるとして。初心者ガイドとしてHow do I migrate my site from mysql to mysqli?を読んでください。

  • パスワードハッシュ関数としてmd5を使用して停止し、代わりにpassword_hashまたはsimilar証明済み機能を使用します。

  • if($user=$dbusername && $pass=$dbpassword)これは、ロジックを実行している:

私はデータベースから取得する値は、私はデータベースに入れた値と同じである場合。

これはかなり無意味ですが、それは不必要に過度のチェックです。返された行の数を正確に数えると、正確に同じ情報が得られます。あなた自身があなた自身のエラーを解決するために、エラーログを使用して起動する必要があり

  • 、あなたはわがままなSQLクエリを理解するために(PHPMyAdminの)でのMySQL EXPLAINを使用する。またHow to get useful error messages in PHP?

  • をお読みください。

  • passwordあなたのスクリーンショットのフィールドは非常に短いようです。 md5の長さは通常32文字ですので、長い文字列と短い文字列を比較しているため、SQLの比較に失敗している可能性があります。ダブルチェック。

  • PHPとMySQLで正しい文字エンコードを使用していることを確認してください。UTF-8 all the way throughを読んで、すべてのMySQLをutf8mb4_unicode_ciに変換してください。また、PHP Multibyte string functions(インストールが必要な場合もあります)の使用に慣れてください。


上記のガイドはあなたの問題を解決しない場合は、最低でも間違って起こっているのかを見ると、あなたの問題を解決する方法とはする(エラーログとの)明確なパスを持っています。

0
<?php 

`include 'inc.config.php'; 
if(isset($_POST["submit"])) 
{ 
    $user = mysql_real_escape_string($_POST['emailid']); 
    $pass = md5(mysql_real_escape_string($_POST['password'])); 
    $sql="SELECT * FROM logsignup WHERE email='$user' AND password='$pass'"; 
    $query=mysql_query($sql); 
    $numofrows = mysql_num_rows($query); 
    if($numofrows > 0)  
    {   
     $row=mysql_fetch_assoc($query)    
     $_SESSSION['EMAIL']= $row['emailid']; 
     $_SESSSION['USERNAME'] $row['username']; 

     if($_SESSSION['EMAIL'] && $_SESSSION['EMAIL']) { 
echo "valid"; 
}else{ 
    echo "invalid"; 
} 
    } 

}` 


?> 
+0

ここで何をしたのか説明できますか?間違ったスペル変数を除いて? – Martin

関連する問題