2016-03-30 7 views
1

Dies ist mein Login PHP-Code, aber ich kann mich nicht einloggen. Mein Code funktioniert bis echo "2", danach funktioniert das nicht mehr.kann nicht in die Datenbank mit PHP einloggen

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"; 
    } 
} 

Hier ist inc.config.php Datei

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

Bild der Datenbank:

Image of the database

+0

Erhalten Sie eine Fehlermeldung? – Elymentree

+3

Einige Dinge zu beachten: Ihr Code ist veraltet ('mysql_ *' Funktionen). Ihr Code ist auch offen für eine nette SQL-Injektion. Sie verwenden eine Hash-Methode, die verletzt wird. Dies führt immer zu 'true':' if ($ user = $ dbusername && $ pass = $ dbpassword) ' – Daan

+1

Bitte check echo $ numofrows; Wenn das Ergebnis 0 ist, überprüfen Sie die Datenbankeinträge. –

Antwort

2

Wenn Wert I aus der Datenbank erhalten die gleiche wie der Wert I in die Datenbank gestellt.

Das ist ziemlich sinnlos, es ist eine unnötig übermäßige Überprüfung. Es ist besser, die korrekte Anzahl der zurückgegebenen Zeilen zu zählen, um genau dieselben Informationen zu erhalten.

  • Sie müssen mit Fehlerprotokollierung starten, selbst Ihre eigenen Fehler zu helfen, zu lösen, lesen Sie bitte How to get useful error messages in PHP?

  • Auch MySQL verwenden EXPLAIN in (phpMyAdmin) Sie verstehen, unberechenbaren SQL-Abfragen zu helfen.

  • Ihr password Feld in Ihrem Screenshot sieht viel zu kurz aus. md5 ist normalerweise 32 Zeichen lang. Was also passieren könnte, ist, dass der SQL-Vergleich fehlschlägt, weil Sie eine lange Zeichenfolge mit einer kürzeren Zeichenfolge vergleichen. Überprüfen.

  • Stellen Sie sicher, dass Sie die korrekte Zeichencodierung in Ihrem PHP und MySQL verwenden, lesen Sie UTF-8 all the way through und konvertieren Sie alle MySQL in utf8mb4_unicode_ci. Auch gewöhnen Sie sich an PHP Multibyte string functions (möglicherweise müssen Sie installieren).


Wenn die oben genannten Führungen nicht lösen Ihr Problem Sie einen klaren Weg, zumindest haben (mit den Fehlerprotokolle), um zu sehen, was das falsch und aus geht, wie das Problem zu lösen.

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

Können Sie erklären, was Sie hier getan haben? Abgesehen davon, Variablen falsch zu buchstabieren? – Martin

Verwandte Themen