WinFuture-Forum.de: Loginsystem - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 3 Seiten +
  • 1
  • 2
  • 3

Loginsystem Nicht getestet

#16 Mitglied ist offline   Rumpelzahn 

  • Gruppe: aktive Mitglieder
  • Beiträge: 75
  • Beigetreten: 27. September 11
  • Reputation: 8

geschrieben 16. Juni 2012 - 10:34

Dann muß das doch dort mindestens entschlüsselbar oder sogar unverschlüsselt gespeichert sein.


stell ich mal in frage. idR ist es eher so, dass auf grund des matches eingegeben email = in db gefundene email einen md5 hash genereiert und diesen an die in der db geschriebene email sendet. darüber wird dann passwort neusetzen/zurücksetzen ermöglicht.
0

Anzeige



#17 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.170
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 16. Juni 2012 - 10:40

Beitrag anzeigenZitat (Rumpelzahn: 16. Juni 2012 - 10:34)

stell ich mal in frage. idR ist es eher so, dass auf grund des matches eingegeben email = in db gefundene email einen md5 hash genereiert und diesen an die in der db geschriebene email sendet. darüber wird dann passwort neusetzen/zurücksetzen ermöglicht.


Ja manchmal kann man sein Passwort zurücksetzen aber in den meisten Fällen krieg ich mein Passwort zugeschickt.
Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#18 Mitglied ist offline   FenKeN 

  • Gruppe: aktive Mitglieder
  • Beiträge: 221
  • Beigetreten: 22. September 11
  • Reputation: 8
  • Geschlecht:Männlich
  • Wohnort:Erding
  • Interessen:Php, C#, Programmierung

geschrieben 16. Juni 2012 - 13:50

Beitrag anzeigenZitat (__42__: 15. Juni 2012 - 20:47)

Gibt genügend große Projekte die prozedural geschrieben sind und dennoch sehr gut funktionieren. Entwickler müssen eben diszipliniert arbeiten, aber das ist auch bei großen OOP-basierten Projekten unumgänglich. Ganz schlimm ist es nur wenn beides vermischt wird. Z.B. in Word-Press der Fall.


Man sollte nie MD5 nehmen.

Zum Code noch etwas reinkommentiert:
<?php
	class login 
	{
		private $Name, $Passwd;

		public function __construct($lname, $lpasswd) 
		{
			$this->Name = $lname;
			$this->Passwd = $lpasswd;

			return LogMeIn(); // Seit wann geben Konstruktoren was zurück?
		}

		//Setter
		private function SetSessionData($DATA) 
		{
			$_SESSION['uid'] = $DATA['uid']; // Seit wann setzen Setter globale Variablen? Und Seit wann sind sie private?
			$_SESSION['username'] = $DATA['username'];
		}

		//Getter
		//Kann für spätere Erweiterungen verwendet werden
		private function GetSessionData()
		{
			// Das macht auch nicht wirklich viel Sinn?
			$DATA = array ( 'uid' => $_SESSION['uid'],
							'username' => $_SESSION['username']
						  );
			return $DATA;
		}

		private function LogMeIn() 
		{
			$db = new Database("localhost","user","passwd");
			$log = $db->pdo->prepare("SELECT uid, username FROM users WHERE username=:uName AND passwd=:pwd");
			$log->bindValue(':uName', $this->Name);
			$log->bindValue(':pwd', md5($this->Passwd)); // md5 ist wie gesagt böse
			$log->execute();
			$DATA = $log->fetch();

			if($DATA != null)
			{
				SetSessionData($DATA);

				//Setzt den letzten Klick auf NOW()
				//Erforderlich für die Useronline Liste
				$hits = $db->SetLastHit($DATA); // unbenutzte lokale Variable
                                return true;
			}

                        return false;
		}
	}
?>




Das ganze hab ich einfach nur Setter genannt, weil ich mir dort meine Sessionvariablen erzeugen will.
$hits kann man wohl weglassen, solang $db->SetLastHit($DATA); vorhanden bleibt, das stimmt.
return LogMeIn(); im Konstruktor war ein Denkfehler von mir.

Aber warum sollte es keinen Sinn machen, ein Loginsystem als eigene Klasse zu machen?
new Login("Username","passwort"); und den Rest macht meine Klasse dahinter..
Heißt weniger Code in den Htmldateien..

Also meiner Meinung nach..
MVC Tutorial
<?php
	echo "Liebe Grüße FenKeN";
?>
0

#19 Mitglied ist offline   __42__ 

  • Gruppe: aktive Mitglieder
  • Beiträge: 38
  • Beigetreten: 10. März 12
  • Reputation: 5

geschrieben 16. Juni 2012 - 15:12

Beitrag anzeigenZitat (Witi: 16. Juni 2012 - 09:58)

Du kannst md5 ruhig weiter verwenden, wenn du das Passwort vorher "salzt". Eine einfache Variante mittels des Benutzernamens kann bspw so aussehen:

$log = $db->pdo->prepare("SELECT uid, username FROM users WHERE username=:uName AND passwd=:pwd");
                        $log->bindValue(':uName', $this->Name);
                        $log->bindValue(':pwd', md5($this->Name.$this->Passwd));


Es gibt aber nicht wirklich einen Grund wieso man einen Algorithmus verwenden sollte, der nicht mehr wirklich ungebrochen ist, wenn ohne erkennbaren Mehraufwand welche zur Verfügung stehen bei denen das nicht der Fall ist. Ausserdem sollten Salts hinreichend lang sein, das würde ich beim Benutzernamen nicht unbedingt vorraussetzen.
0

#20 Mitglied ist offline   FenKeN 

  • Gruppe: aktive Mitglieder
  • Beiträge: 221
  • Beigetreten: 22. September 11
  • Reputation: 8
  • Geschlecht:Männlich
  • Wohnort:Erding
  • Interessen:Php, C#, Programmierung

geschrieben 18. Juni 2012 - 05:56

Aber warum sollte es keinen Sinn machen, ein Loginsystem als eigene Klasse zu machen?
new Login("Username","passwort"); und den Rest macht meine Klasse dahinter..
Heißt weniger Code in den Htmldateien..

Also meiner Meinung nach..
MVC Tutorial
<?php
	echo "Liebe Grüße FenKeN";
?>
0

#21 Mitglied ist offline   der dom 

  • Gruppe: aktive Mitglieder
  • Beiträge: 580
  • Beigetreten: 14. Juni 12
  • Reputation: 73
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Mein Haus, meine IT, Programmierung

geschrieben 18. Juni 2012 - 09:19

Ist doch auch ganz gut falls man mal andere Projekte hat. Ich hätte keine Lust ständig das Login System zu schreiben. Dann lieber eine eigene Klasse mit den Funktionen.

Was MD5 angeht, Salted geht´s, SHA wäre allerdings schöner.

Ich schau mir die ganze Sache auch nochmal an sobald ich daheim bin. Sieht in jedemfall sehr interessant aus.
Mit allem, was du tust, machst du offenkundig, mit welcher Einstellung du durch's Leben gehst. -- Steffen Glückselig
0

#22 Mitglied ist offline   FenKeN 

  • Gruppe: aktive Mitglieder
  • Beiträge: 221
  • Beigetreten: 22. September 11
  • Reputation: 8
  • Geschlecht:Männlich
  • Wohnort:Erding
  • Interessen:Php, C#, Programmierung

geschrieben 18. Juni 2012 - 09:24

Damits läuft brauchst du aufjedenfall noch meine database Klasse, da ich dort meine Abfragen schalte.
Ausser du schreibst es etwas um, um deine zu integrieren ;)

Bin für Feedback immer offen!
MVC Tutorial
<?php
	echo "Liebe Grüße FenKeN";
?>
0

#23 Mitglied ist offline   __42__ 

  • Gruppe: aktive Mitglieder
  • Beiträge: 38
  • Beigetreten: 10. März 12
  • Reputation: 5

geschrieben 18. Juni 2012 - 14:21

Beitrag anzeigenZitat (Kaputtnik: 18. Juni 2012 - 09:19)

Ist doch auch ganz gut falls man mal andere Projekte hat. Ich hätte keine Lust ständig das Login System zu schreiben. Dann lieber eine eigene Klasse mit den Funktionen.

Code wieder zu verwenden macht ja Sinn, aber wozu eine eigene Klasse schreiben wie sie oben steht, wenn diese:
a) Keine öffentlichen Methoden sondern nur einen Konstruktor hat
b) Mehrere Objekte absolut keinen Sinn machen

z.B.
new Login('a', 'b');
new Login('a', 'c');
new Login('d', 'e');


braucht keiner.

Also macht Singleton ein Singleton Pattern mit öffentlichen Methoden mehr Sinn (vgl. Zend: http://framework.zen...troduction.html) oder man legt das ganze gleich als Action-Handler aus der sich auch um den Fehlerfall selber kümmert.

Oder man streicht den ganzen Code vor LogMeIn weg und belässt es bei einer Funktion. Die funktioniert dann immerhin richtig (return false)...

Gibt noch genügend andere Möglichkeiten, aber so wie es oben steht ist es jedenfalls fehlerbehaftet und eher ein Missbrauch von OOP als eine sinnvolle Anwendung.

Dieser Beitrag wurde von __42__ bearbeitet: 18. Juni 2012 - 14:24

0

#24 Mitglied ist offline   der dom 

  • Gruppe: aktive Mitglieder
  • Beiträge: 580
  • Beigetreten: 14. Juni 12
  • Reputation: 73
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Mein Haus, meine IT, Programmierung

geschrieben 18. Juni 2012 - 14:31

Verbesserungswürdig ist es gewiss. Der Grundgedanke an sich ist allerdings schon gut - wie gesagt, wenn es denn funktioniert - ich kann´s im Moment nicht testen - und sauber ist, dann kann man da schon einiges mit machen - meine Meinung.

Natürlich gebe ich dir recht, dass es auch weitestgehend Fehlerfrei sein sollte - und nicht voll von Code den niemand braucht.
Mit allem, was du tust, machst du offenkundig, mit welcher Einstellung du durch's Leben gehst. -- Steffen Glückselig
0

#25 Mitglied ist offline   FenKeN 

  • Gruppe: aktive Mitglieder
  • Beiträge: 221
  • Beigetreten: 22. September 11
  • Reputation: 8
  • Geschlecht:Männlich
  • Wohnort:Erding
  • Interessen:Php, C#, Programmierung

geschrieben 18. Juni 2012 - 14:32

Das ganze baut ja auch eher auf andere Features von mir auf, die ich später mal verwenden will. Für diesen Fall hab ich auch nur das relevanteste gepostet.
MVC Tutorial
<?php
	echo "Liebe Grüße FenKeN";
?>
0

#26 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.170
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 18. Juni 2012 - 15:37

Beitrag anzeigenZitat (CryztaN: 18. Juni 2012 - 05:56)

Aber warum sollte es keinen Sinn machen, ein Loginsystem als eigene Klasse zu machen?
new Login("Username","passwort"); und den Rest macht meine Klasse dahinter..
Heißt weniger Code in den Htmldateien..

Also meiner Meinung nach..


Bildlicher Vergleich: Stell dir vor, du malst eine Blume auf ein Stück Pappe, schneidest sie aus und hast eine Schablone mit der du die Blume mehrfach an die Wand malen kannst - macht Sinn. Es macht aber nicht wirklich Sinn, wenn du die Blume nur einmal an der Wand haben willst. Dann hättest du die Blume statt auf die Pappe gleich an die Wand malen können. So sehe ich das mit Programmteilen, die im Projekt nur an einer Stelle stattfinden.
(Ist aber nur meine Meinung)
Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#27 Mitglied ist offline   FenKeN 

  • Gruppe: aktive Mitglieder
  • Beiträge: 221
  • Beigetreten: 22. September 11
  • Reputation: 8
  • Geschlecht:Männlich
  • Wohnort:Erding
  • Interessen:Php, C#, Programmierung

geschrieben 18. Juni 2012 - 17:22

Und so kann ich die Klasse in jedem weiterem Projekt verwenden und muss das Rad nicht neu erfinden.
meine aktion.php würde nach dem login quasi nur :

include("loginsystem.class.php"); $login = new Login("username","pass");


Beinhalten und schon würds funktionieren.
MVC Tutorial
<?php
	echo "Liebe Grüße FenKeN";
?>
0

#28 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.170
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 18. Juni 2012 - 18:28

Beitrag anzeigenZitat (CryztaN: 18. Juni 2012 - 17:22)

Und so kann ich die Klasse in jedem weiterem Projekt verwenden und muss das Rad nicht neu erfinden.
meine aktion.php würde nach dem login quasi nur :

include("loginsystem.class.php"); $login = new Login("username","pass");


Beinhalten und schon würds funktionieren.


Ja klar aber du kannst doch deinen Loginvorgang auch so in eine extra Datei auslagern und mußt ihn dann nur kurz includieren. Das ist doch der selbe Aufwand. Das hat ja nichts damit zu tun, dass an dieser Stelle (für mein Verständnis) keine Klasse notwendig ist.
Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#29 Mitglied ist offline   __42__ 

  • Gruppe: aktive Mitglieder
  • Beiträge: 38
  • Beigetreten: 10. März 12
  • Reputation: 5

geschrieben 18. Juni 2012 - 19:39

Beitrag anzeigenZitat (CryztaN: 18. Juni 2012 - 17:22)

Und so kann ich die Klasse in jedem weiterem Projekt verwenden und muss das Rad nicht neu erfinden.
meine aktion.php würde nach dem login quasi nur :

include("loginsystem.class.php"); $login = new Login("username","pass");


Beinhalten und schon würds funktionieren.

Funktioniert bei allen anderen Lösungen genau so. Wie dem auch sei: Ich würde mir angewöhnen Dateien so zu benennen wie die Klassen. loginsystem <> Login
0

#30 Mitglied ist offline   FenKeN 

  • Gruppe: aktive Mitglieder
  • Beiträge: 221
  • Beigetreten: 22. September 11
  • Reputation: 8
  • Geschlecht:Männlich
  • Wohnort:Erding
  • Interessen:Php, C#, Programmierung

geschrieben 18. Juni 2012 - 22:04

Hab ich auch ;)
Habs nur hier grad perhand getippt, deshalb auch kein Zeilenumbruch
MVC Tutorial
<?php
	echo "Liebe Grüße FenKeN";
?>
0

Thema verteilen:


  • 3 Seiten +
  • 1
  • 2
  • 3

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0