ich mal fragen wie ihr die Bereiche Login, User, Registrierung zusammenführt / teilt.
Habt ihr 1 große Klasse wo alles drin ist oder 3 Klassen in einem Login & Logout anderem die Registrierung dann noch die 3te Klasse (User) die die Daten aus der Datenbank beschafft?
und welche Methoden würdet ihr eventuell in die verschiedene Klassen packen?
Hab leider immer nur prozedural Programmiert und könnte auch dadrin die Themen schnell runter schreiben jedoch möchte ich in meinen Projekt oop verwenden. Fehlt leider die Praxis Erfahrung.
Links wo sowas ordentlich erklärt ist nehme ich dankend an.
Das Objekt ist der User, also brauchst du es nicht in 3 Klassen zu unterteilen.
Eine Klasse User reicht.
PHP Code:
class User { // User existiert public $exists = FALSE;
function __construct($user=false) { if ($user) { // Gucken ob der gegebene Nutzer existiert und $exists dementsprechend ändern. if ($this->exists) { /* Nutzerdaten aus der Datenbank "besorgen" und jeweils in einzelnde Var's abspeicher. * * Als Bsps. haben wir nen Array * ID | USERNAME | PASSWORD | EMAIL * 1 | TEST | PSWHASH | * * foreach ($array as $columnname => $value ) * { * $this->{$columnname} = $value * } * * dann kannste die Klasse nachher bequem instanzieren und dir die Daten die du benötigst besorgen. * * $user = new User('TEST'); * echo $user->email; */ } } }
function createNewAccount($data=array()) { // Neuen Account erstellen }
function verifyAccount($data=array()) { // Account verifizieren }
So groß wird die Klasse nicht.. ^^
Du hast ein Objekt User und evtl ein Objekt Datenbank.
Der User muss von der Datenbank abhengen um Zugriff auf eben diese zu bekommen.
Der Sinn von OOP ist es nicht für jede Funktion / Methode ne Klasse zu erstellen.
Ich würde es machen wie ich es dir oben gezeigt habe.
Die Klassen nach deinen Seiten anzulegen sprich "Home,News,Register.. etc." macht wenig Sinn.
Die Klassen nach deinen Seiten anzulegen sprich "Home,News,Register.. etc." macht wenig Sinn.
Das hätte ich auch nie gemacht.
Nur ich hab gedacht das in die Klasse User noch irgendwie getNickname, getProfileImage, getID aus der Session / Datenbank, login, logout, registrieren .... dann würd sie recht **** werden mit der Zeit
dann hast du dir das Beispiel oben nicht angeguckt (nicht richtig) oder es nicht verstanden, du kannst die Userdaten direkt beim Instanzieren abgreifen und abspeichern.
Dann kannste nachher einfach
$user->email;
$user->id;
etc. benutzen. Alles eine Sache der konzipierung der Klasse. )
zu der Boolean Eigenschaft $exist könntest du bspsw. noch eine $loggedIn Eigenschaft anlegen. zich Funktionen zu schreiben die die jeweiligen Sachen wiedergeben währe zu viel Arbeit, wir sind ja immerhin "faul" und wollen uns unnötigen Code sparen.
Also warum nicht den Konstruktor benutzen um die Daten abzugreifen? :P
lg
Vll. ist es grad zu warm für mich ABER wenn du die Klasse User instanziiert wird ja dein __construct direkt aufgerufen existiert aber kein account und möchte einfach nur ein neuen anlegen kommste ja nicht wieder in dein function __construct rein (automatisch) oder stehe ich grad aufm Schlauch?
Wenn ja lass mich es wissen und ich leg das beiseite zock den rest des Tages bis es wieder eine angenehme Temperatur im Raum herrscht
Du kannst auch eine Klasse machen, die nur die Eigenschaften eines Benutzers speichert und eine zweite, mit der ein Benutzer aus der Datenbank geladen / gespeichert wird und die die Zugangsdaten überprüfen kann.
Denn gerade dann, wenn du eine größere Klasse befürchtest, hast du so mehr Flexibilität, denn das Laden / Speichern / Speicherformat ist unabhängig vom Account. Zudem ist das Laden / Speichern für die meisten Komponenten sowieso egal.
hmm ich werd wohl erstmal eine "große" Klasse bauen falls diese in meinen Augen zu groß wird muss ich schauen ob ich irgendwelche teile in eine andere Klasse verschieben kann.
Ich habe etwas vergessen: Zumindest die Methode zum Überprüfen der Benutzerdaten würde ich static machen, denn das ist eigentlich wirklich nicht die Aufgabe von einem Account selber. Wenn man davon ausgeht, dass ein Objekt immer ein Ding darstellt, ist eine Methode "$ding->gibtEsDich()" auch unpassend, "DieseDinge::gibtEsDasDing()" oder "$dieseDingeVerwalter->gibtEsDasDing()" hingegen sinnvoller.
bau gerade aktuell an einer kleinen OpenSorucePage
(vielleicht hat ja einer lust mit zumachen =])
Da hab ich das so gemacht, das es ein User Object gibt, das is eine so genannte Entity, da sind so sachen wie Username, Passwort un co drin gespeichert, für so sachen wie Login und Logout hab ich meinen AuthController, weil das hat wenig mit dem User zutun sondern eher mit der Authentifizierung. Für so sachen wie Register gibt es einen UserService der sich darm kümmert einen neuen User anzulegen und dann noch eine Mail raus zuschicken, man könnte es auch im Controller machen, aber man will ja nicht das die so groß werden. am liebsten 10Zeilen pro Methode, aber das geht eben net immer^^
UserEntity =>
AuthController =>
UserService =>
Für die RegistrationsFormular gibt es auch eine eigene Klasse, der Validierung und dem Mappen der ForumalDaten auf das UserObject gibts ein Hydrator.
RegisterForumlar =>
RegisterValidierung =>
Hydrator =>
Bitte beachten der Code is noch im dev-master status, können also noch Fehler drin sein.
Vll. ist es grad zu warm für mich ABER wenn du die Klasse User instanziiert wird ja dein __construct direkt aufgerufen existiert aber kein account und möchte einfach nur ein neuen anlegen kommste ja nicht wieder in dein function __construct rein (automatisch) oder stehe ich grad aufm Schlauch?
Wenn ja lass mich es wissen und ich leg das beiseite zock den rest des Tages bis es wieder eine angenehme Temperatur im Raum herrscht
Angenommen du hast einen Array mit 3 Usern dessen Werte du nicht kennst.
Wenn du nun die Emails dieser 3 User, die du selber nicht kennst, herausfinden willst könntest du das mit den Beispiel von mir wie folgt machen.
foreach($users as $index => $user) { $user{$index} = new User($user); if($user{$index}->exists) { echo $user{$index}->email; } echo $user{$index}." with ID $user didnt exist." }
In den Beispiel wird für jeden User eine neues Objekt der Klasse User erstellt mit den man dann die Daten für sich selber abgreifen kann.
Falls du nun nen Ranking o.a. bauen willst machste dafür (so würde ich es machen) eine neue Methode die dir die Userliste als Array wiedergibt.
PHP Code:
public function getTop100Players() { ... return array(); }
Beim Instanzieren musst du ja nicht unbedingt einen Nutzer angeben.
PHP Code:
$users = new User(); foreach($users->getTop100Players as $index => $user) { $user{$index} = new User($user); echo $user{$index}->email; }
Klasse User
Methoden (public)
__construct bekommt eine Datenbankverbindung übergeben
Account erstellen
Acccount verifizieren (bei bestätigter email-adresse)
Login
Logout
changePassword
Benutzerdaten holen (steht alles in einer Tabelle deswegen nur eine Methode)
Methoden (private) z.B.
Password verschlüsseln
prüfen ob email / username schon verwendet werden
wird zwar nicht das beste sein aber fürn anfang sollte es reichen
[VB.NET] [How To]Login und Registrierung in ein Programm einbauen 05/20/2015 - Coding Tutorials - 36 Replies Hallo,
In diesem Tutorial zeig ich euch wie ihr einen Login + Registrierung mit MYSQL programmiert.
1. Was brauchen wir?
Eine Mysql Datenbank die Externen Zugriff Erlaubt, die bekommen wir z.b. hier kostenlos: HIER
MYSQL
Visual Basic 2008
PHP Login Script mit Registrierung 02/03/2014 - Web Development - 15 Replies Hallo
ich wollte für mein kleines Projekt ein Login Script machen. Habe mir das Video angeschaut PHP Login Script mit Registrierung - YouTube . Nur leider, wenn ich ein Account Registriere. Meint er es wäre erfolgreich, nur der erstellte Account ist in MySQL nicht zu finden.
Die PHP Skripts + SQL Datei sind im Anhang.
[C++] [Help] Login System mit Registrierung 06/16/2012 - C/C++ - 1 Replies Wie im Titel schon gesagt ein Login-System, wo man sich registrieren muss.
Und wie(habe ich mich schon immer gefragt) mache ich dann so eine Datenbank
die die Registrierungen speichert und man sich dann nur einen nicht vergebenen Namen aussuchen kann etc.. also wie bei so einem Forum, halt nur das es ein Programm ist
Würde mich freuen, wenn mir einer dabei helfen würde ;)
MfG Razer'
FTP Login+Registrierung Problem 10/10/2011 - General Coding - 5 Replies hi,
Habe mein Login per ftp gemacht.
Also so:
wc.Credentials = New Net.NetworkCredential("user", "Meinpw")
TextBox3.Text = wc.DownloadString("Mein ftp server" + TextBox1.Text + TextBox2.Text + ".txt")
Login + Registrierung ohne server! 12/06/2010 - Coding Tutorials - 17 Replies Hallo also hier zeige ich euch mal eine methode wie ihr eine Login box mit Registrierung braucht.
Was ist hier anders wie bei den anderen tuts?
Ganz einfach ihr braucht wirklich nur visual basic 2008 und müsst euch
auf keiner anderen seite anmelden!
Was brauche ich?
2formen
in die erste form kommt:
2x Label