2016-04-01 14 views
2

Ich bin neu in PHP, ich habe ein Login-Formular und Homepage erstellt. Ich folgte dem gleichen, wie es in den Tutorials heißt, aber ich bekomme den Fehler als "falsche Details", obwohl ich die richtigen Anmeldeinformationen angegeben habe.PHP - Login Formular

// Anmeldeseite

**Login.php** 

     <?php 
     session_start(); 
     include_once 'database1.php'; 

     if(isset($_SESSION['user'])!="") 
     { 
     header("Location: index1.php"); 
     } 
     if(isset($_POST['login'])) 
     { 
     $email = mysql_real_escape_string($_POST['email']); 
     $pass = mysql_real_escape_string($_POST['password']); 
     $result=mysql_query("SELECT * FROM users WHERE email='$email'"); 
     $row=mysql_fetch_array($result); 
     if($row['password']==md5($pass)) 
     { 
      $_SESSION['user'] = $row['number']; 
      header("Location: index1.php"); 
      ?> 
     <script> alert ('haii'); </script> 
     <?php 
     } 
     else 
     { 
      ?> 
       <script>alert('wrong details');</script> 
       <?php 
     } 

     } 
     ?> 
     <html> 


    <body> 


      <form method="post" > 
     <label><center>EMAIL</center> <input type="text" name="email" placeholder="Your Email" required /> </label> </br> 

     <label>PASSWORD <input type="password" name="password" placeholder="Your Password" required /></label> </br> 


    <button type="submit" name="login">login</button> </br> 
    </br> 

    </form>  

    </html> 

// Index Seite

**index1.php** 

<?php 
session_start(); 
include_once 'database1.php'; 

if(!isset($_SESSION['user'])) 
{ 
header("Location: login.php"); 
} 
$result=mysql_query("SELECT * FROM users WHERE number=".$_SESSION['user']); 
$userRow=mysql_fetch_array($result); 
?> 
<html> 
<body> 
<p> welcome </p> 

</body> 
</html> 
+3

Sie verwenden ein altes Tutorial dafür, das ist nicht sicher, versuchen Sie etwas wie diese http://www.codingcage.com/2015/04/php-login-and-registration-script-with.html – cmorrissey

+0

sind Sie können den Inhalt der Datenbank freigeben, da es sich um eine Entwicklungsumgebung handelt? –

+0

Die Zeile 'if (isset ($ _ SESSION ['user'])! =" ")' Sieht so aus, als hätten Sie Code aus zwei verschiedenen Quellen kopiert und eingefügt. Es sollte 'if (iset ($ _ SESSION ['user']))' 'sein, aber ich bevorzuge' if (! Empty ($ _ SESSION ['user'])) ' – kainaw

Antwort

0
session_start(); 
include_once 'database1.php'; 
if(isset($_SESSION['user'])!="") { 
    header("Location: index1.php"); 
} 
if(isset($_POST['login'])){ 
    $email = mysql_real_escape_string($_POST['email']); 
    $pass = mysql_real_escape_string($_POST['password']); 
    $result=mysql_query("SELECT * FROM users WHERE email='$email'"); 
    $row=mysql_fetch_array($result); 
    if($row['password']==md5($pass)) { 
     $_SESSION['user'] = $row['number']; 
     echo "<script>alert('logged in');</script>" 
     header("Location: index1.php"); 

    } 
    else { 
    echo "<script>alert('wrong credentials');</script>" 
    } 
}  
1

Typischerweise hat md5 Zeichenfolge 32 Zeichen.

echo md5(77); // Result: 28dd2c7955ce926456240b2ff0100bde 

Aber in Ihrem Fall gibt die Datenbank abgeschnittene MD5-Zeichenfolge, die 20 Zeichen hat.

28dd2c7955ce92645624 

Das Problem besteht darin, dass die Länge Ihres DB-Kennwortfeldes nur aus 20 Zeichen besteht. Bitte ändern Sie Ihre Tabelle und stellen Sie die Länge des Passwortfelds auf 32 Zeichen ein, so dass die vollständige und korrekte md5-Zeichenfolge beibehalten werden kann.

+0

jetzt kann ich zugreifen .. ich schätze deine hilfe. – krishna

+0

Das ist großartig. Ich wäre dankbar, wenn Sie die Antwort als richtige Antwort markieren. –

+0

Ich habe das vor langer Zeit gemacht .. aber ich schloss gestern selbst, so dass es mich fragt, um insgesamt 15 Ruf zu verdienen, um es zu markieren .. danke. – krishna