2015-06-12 17 views
6

EDIT: Es funktioniert jetzt, danke Leute.
Ich habe ein einfaches Login-System mit PHP erstellt, nachdem ich einige Benutzer auf einem MySQL erstellt habe. Aber wenn ich versuche, mich anzumelden, gebe ich eine völlig leere Seite ein, egal was meine Eingabe ist. Hier ist mein html ...Einfaches Login-System mit PHP

<body> 
    <div class="mainbox"> 
     <h3 align="center">Log In</h3> 
     <hr> 
     <form role="form" class="form-horizontal" method="POST" action="connectivity.php"> 
     <div class="form-group"> 
      <label for="Username">Username:</label> 
      <input type="text" class="form-control" name="username" size="40" placeholder="Enter Username"> 
     </div> 
     <div class="form-group"> 
      <label for="pwd">Password:</label> 
      <input type="password" class="form-control" name="pass" size="40" placeholder="Enter Password"> 
     </div> 
     <button id="Submit" type="submit" name="submit" class="btn btn-default">Submit</button> 
     </form> 
    </div> 
</body> 

und hier ist connectivity.php ...

<?php 
define('DB_HOST', 'localhost'); 
define('DB_NAME', 'simplelogin'); 
define('DB_USER','root'); 
define('DB_PASSWORD',''); 

$con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error()); 
$db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysql_error()); 

function SignIn() 
{ 
    session_start(); 
    if(!empty($_POST['username'])) 
    { 
     $query = mysql_query("SELECT * FROM UserName where userName = '$_POST[username]' AND pass = '$_POST[pass]'") or die(mysql_error()); 
     $row = mysql_fetch_array($query) or die(mysql_error()); 
     if(!empty($row['userName']) AND !empty($row['pass'])) 
     { 
      $_SESSION['userName'] = $row['pass']; 
      echo "Successful login to user profile page!"; 
     } 
     else 
     { 
      echo "Sorry, You have either entered a wrong Username or a wrong password. Please retry"; 
     } 
    } 
}  
if(isset($_POST['submit'])) 
{ 
    SignIn(); 
} 
?> 

Die Funktion nicht ausgeführt wird, was soll ich tun?

+2

Fehlerprotokoll ein und nicht GET-Methode für die Anmeldung verwenden. Verwenden Sie stattdessen die POST-Methode. Vermeiden Sie mysql_ * -Funktionen. – Deep

+0

Kann ich wissen, warum ich POST verwenden soll? Ich lerne immer noch PHP ... @DeepKakkar – Anjunadeep

+1

Es sieht aus wie Sie die Kennwörter in Ihrer Datenbank im Klartext speichern. Du solltest dafür im Gefängnis eingesperrt werden. ; p Benutze mindestens MD5. –

Antwort

10

Zuerst, Sie sollten immer POST Methode für Login-Funktion verwenden lität. POST Methode ist sicher, anstatt GET Methode. POST stellt keine Informationen über die URL zur Verfügung. Für weitere Informationen, um den Unterschied zwischen GET und POST zu erfahren, gehen Sie zu Link.

Sekunde, Sie sollten vermeiden mysql_* Methoden. Informationen finden Sie unter SO LInk.

Dritte, Um ein Formular zu senden verwenden Sie <button Tag und kein JS für Formular senden auf seinem Click-Ereignis Also Ihr Formular wird nicht übergeben. auch nicht seinen Typ definiert als submit wie `type =" submit ". Verwenden Sie besser den Eingabetyp submit, um das Formular zu senden.

Vierte, Sie erhalten Formulardaten mit POST-Methode und in Form von Ihnen verwendete GET-Methode So Ihre Aktionsdatei aufgrund methodischen Konflikt nicht in der Lage ist, Daten zu erhalten, so dass die Methode in Tag als method="post" ändern.

Fünfte, Sitzung sollte oben auf der Seite gestartet werden.

Sechste, besser, das Formular mit clientseitige Validierung zuerst zu validieren, dann mit der serverseitigen Validierung sollte auch angewendet werden.

nun im Code:

  • Änderung <form> Tagattribut als method="post".
  • Verwenden Sie <input type="submit" name="submit" value="Submit" />, um das Formular zu senden. action file empfängt Daten aus dem Formular unter Verwendung des Elementnamens und Sie vermissen das in input type="submit" name="submit"
  • Entfernen Sie mysql_* Funktionen aus Ihrem Code und verwenden Sie mysqli_* für Datenbankkonnektivität und weitere Verwendung.
+1

Ich brauchte das erste und zweite Bit am meisten. Vielen Dank, sehr hilfreiche Links Mate – Anjunadeep

+0

bearbeitet Antwort mit mehr Informationen. herzlich willkommen. immer bereit, anderen zu helfen @Anjunadeep – Deep

4

Ihr Formular hat die Methode von GET, aber Ihre Konnektivität erwartet POST. Ändern Sie die Methode in Ihrem Formular in POST, und es sollte besser sein.

Sie haben auch kein Namensattribut auf Ihrer Absenden-Schaltfläche. Wenn Sie ein Formular bereitstellen, sucht es nach den Namensattributen, nicht nach den IDs. Es wird also niemals deine Funktion eingeben.

+0

Oh mein Gott was für ein dummer Fehler. Danke, es funktioniert jetzt – Anjunadeep

3

Sie müssen auch

<input id="Submit" type="submit" name="submit" class="btn btn-default">Submit</button> 
4

Sie definieren sollten, Button Namen wie 'submit' .. Versuchen Sie, Ihre Button-Code zu ersetzen, wie folgt,

<button id="Submit" name="submit" type="submit" class="btn btn-default">Submit</button> 

Es wird wie Ihre exceptation arbeiten. . :-)

+0

Es tut, vielen Dank :-) – Anjunadeep

Verwandte Themen