Login Script begutachten

EIS-TEE

PHP-MySQLi Skill:13%
Hallo Community,

könntet Ihr einmal über mein Login Script schauen, ob es vielleicht noch was zum optimieren gibt ?
Bin selber noch recht unerfahren, darum sehe ich jetzt nicht was ich noch optimieren könnte :(

PHP:
<?php
   if(isset($_POST['submit_login'])){
      
	  if(!empty($_POST['user_email']) && !empty($_POST['user_passwort'])){
	  
	  // Start MySQLi Abfrage //
	  
	     $db = new MySQLi('localhost', 'root', '', 'community');
		 
		 $sql = sprintf("SELECT user_email, user_passwort FROM user_login WHERE user_email='%s' AND user_passwort='%s'",
		                
						$db->real_escape_string($_POST['user_email']),
						
						md5($_POST['user_passwort']));
						
		 $resultat = $db->query($sql);
		 
		       // Start Ergebnis Überprüfen //
		 
		       if($resultat->num_rows > 0){
			
			   #############################################
			   # Hier kommt später das Session System rein #
			   #############################################
			   
			   echo 'Sie sind eingelogt !';
			
			   }else{
			
			   echo 'Bitte überprüfen Sie Ihre Daten !';
			
			   }
			   
			   // Ende Ergebnis Überprüfen //
		 
		 $db->close();
	  
	  // Ende MySQLi Abfrage //
	  
	  }else{
	  
	  echo 'Bitte fühlen Sie alle Felder aus !';
	  
	  }
	  
   }
?>

<!-- Start Login Box -->
   <form action="" method="post">
      <table bgcolor="#FFCC99">
      <tr>
            <td><b>Email:</b></td>
            <td><input type="text" name="user_email" /></td>
      </tr>
      <tr>
            <td><b>Passwort:</b></td>
            <td><input type="password" name="user_passwort" /></td>
      </tr>
      <tr>
            <td colspan="2" align="right"><input type="submit" value="Login" name="submit_login" /></td>
      </tr>
      </table>
   </form>
<!-- Ende Login Box -->


Würde mich über jeden Tipp freuen :)

~EIS-TEE
 
Moin Ice-T :-)

Code:
if(isset($_POST['submit_login'])){
Du prüfst da, ob jemand auf den Button geklickt hat.

Viele Leute tun dies nicht, sondern drücken einfach die Enter-Taste, um das Formular zu Senden->das würde jedoch den Login-Vorgang fehlschlagen lassen.

Daher: verzichte besser auf die Prüfung des Buttons....das Prüfen der Daten in den Eingabefeldern ist ausreichend.
 
Morgen Sven Mintel,

ein ganz großes dankeschön an dich :), das hätte später bestimmt viel ärger gemacht,
schön das man auch auf so Fehler hingewiesen wird :)

Überarbeite Version:
PHP:
<?php

   if(!empty($_POST['user_email']) && !empty($_POST['user_passwort'])){
	  
	  // Start MySQLi Abfrage //
	  
	     $db = new MySQLi('localhost', 'root', '', 'community');
		 
		 $sql = sprintf("SELECT user_email, user_passwort FROM user_login WHERE user_email='%s' AND user_passwort='%s'",
		                
						$db->real_escape_string($_POST['user_email']),
						
						md5($_POST['user_passwort']));
						
		 $resultat = $db->query($sql);
		 
		       // Start Ergebnis Überprüfen //
		 
		       if($resultat->num_rows > 0){
			
			   #############################################
			   # Hier kommt später das Session System rein #
			   #############################################
			   
			   echo 'Sie sind eingelogt !';
			
			   }else{
			
			   echo 'Bitte überprüfen Sie Ihre Daten !';
			
			   }
			   
			   // Ende Ergebnis Überprüfen //
		 
		 $db->close();
	  
	  // Ende MySQLi Abfrage //
	  
   }

?>

<!-- Start Login Box -->
   <form action="" method="post">
      <table bgcolor="#FFCC99">
      <tr>
            <td><b>Email:</b></td>
            <td><input type="text" name="user_email" /></td>
      </tr>
      <tr>
            <td><b>Passwort:</b></td>
            <td><input type="password" name="user_passwort" /></td>
      </tr>
      <tr>
            <td colspan="2" align="right"><input type="submit" value="Login" name="submit_login" /></td>
      </tr>
      </table>
   </form>
<!-- Ende Login Box -->


Auf die Fehlermeldung mit den eingaben kann ich getrost verzichten,
ich denke der Fehler sollte dem User schon selber einleuchten :D

Gibt es sonst noch teile die ich optimieren könnte ?

Nachtrag:
Ich habe das jetzt mal durch getestet, das geht auch mit Enter ?
kannst du das ein bisschen besser beschreiben ?


~EIS-TEE
 
Zuletzt bearbeitet:
Nachtrag:
Ich habe das jetzt mal durch getestet, das geht auch mit Enter ?
kannst du das ein bisschen besser beschreiben ?


~EIS-TEE
in deiner aktuellen Formularkonstellation wird der Button auch per ENTER mitgesendet, es gibt aber Konstellationen, in denen das nicht der Fall wäre.

Da
a: der Button nicht erheblich ist für das Login
b: man nie wissen kann, ob und wie man den Loginvorgang später nochmal ändert
....also mein Vorschlag, darauf zu Verzichten.


Mögliche Szenarien:
Du fügst bspw. einen weiteren Submit-Button ein, bspw. für eine Passwort-vergessen-Funktion. Dann ist es allein von der Position des Buttons im Formular abhängig, ob er übermittelt wird.

Oder: du nimmst später per JS eine Prüfung der Benutzereingaben vor dem Senden vor, und sendest das Formular mittels sub2mit() ....auch da wäre es dem Zufall überlassen, ob der Button gesendet würde.
 

Neue Beiträge

Zurück