Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Web Development
You last visited: Today at 11:47

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



PHP & Klassen Login, User, Registrierung?

Discussion on PHP & Klassen Login, User, Registrierung? within the Web Development forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jul 2010
Posts: 283
Received Thanks: 16
PHP & Klassen Login, User, Registrierung?

Ahoi Matrosen,

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.


MfG
Masterkroko
Masterkroko1 is offline  
Old 07/19/2014, 19:34   #2
TBM Head Mod





 
Icetea's Avatar
 
elite*gold: 0
Join Date: Oct 2012
Posts: 23,929
Received Thanks: 2,046
Ich würde das ganze in eine Klasse machen. Wie man es macht bleibt letztendlich jedem selbst überlassen. Jeder Coder macht es anders.

Liebe Grüße,
Icetea'
Icetea is offline  
Old 07/19/2014, 19:40   #3
 
elite*gold: 0
Join Date: Jun 2014
Posts: 21
Received Thanks: 7
Musst einfach mal nachdenken. :P

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
    
}
    
    function 
signUp() {
        
// LogIn
    
}
    
    function 
signOut() {
        
//LogOut
    
}

--------------------------------------------------------------------------------

#edit
Quote:
Links wo sowas ordentlich erklärt ist nehme ich dankend an.
kyls is offline  
Old 07/19/2014, 19:57   #4
 
elite*gold: 0
Join Date: Jul 2010
Posts: 283
Received Thanks: 16
Quote:
Originally Posted by kyls View Post
Musst einfach mal nachdenken. :P

Das Objekt ist der User, also brauchst du es nicht in 3 Klassen zu unterteilen.

Eine Klasse User reicht.

Das hatt ich mir am Anfang auch gedacht und dann überlegt hmm die wird dann recht groß guck ich mal in forem (gegooglet) wie die das so machen.

& in jedem Forum und Tutorials machen die das anders deswegen wollte ich nochmal nachfragen was ihr so dazu sagt
Masterkroko1 is offline  
Old 07/19/2014, 20:03   #5
 
elite*gold: 0
Join Date: Jun 2014
Posts: 21
Received Thanks: 7
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.

lg
kyls is offline  
Old 07/19/2014, 20:09   #6
 
elite*gold: 0
Join Date: Jul 2010
Posts: 283
Received Thanks: 16
Quote:
Originally Posted by kyls View Post
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
Masterkroko1 is offline  
Old 07/19/2014, 20:18   #7
 
elite*gold: 0
Join Date: Jun 2014
Posts: 21
Received Thanks: 7
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
kyls is offline  
Old 07/19/2014, 20:23   #8
 
elite*gold: 0
Join Date: Jul 2010
Posts: 283
Received Thanks: 16
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
Masterkroko1 is offline  
Old 07/19/2014, 21:24   #9
 
elite*gold: 0
Join Date: Jan 2012
Posts: 759
Received Thanks: 416
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.
dowhile is offline  
Old 07/19/2014, 21:44   #10
 
elite*gold: 0
Join Date: Jul 2010
Posts: 283
Received Thanks: 16
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.
Masterkroko1 is offline  
Old 07/19/2014, 22:03   #11
 
elite*gold: 0
Join Date: Jan 2012
Posts: 759
Received Thanks: 416
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.
dowhile is offline  
Old 07/19/2014, 23:42   #12
 
elite*gold: 0
Join Date: Jul 2010
Posts: 283
Received Thanks: 16
Hat eventuell jemand ein Beispiel?
User KLasse + Methoden + Kommis was die Methode macht Code braucht nicht dabei zu sein
Masterkroko1 is offline  
Old 07/20/2014, 00:46   #13
 
KoKsPfLaNzE's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 731
Received Thanks: 233
Hallo,

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.


Bei Fragen gern in Skype melden =)
KoKsPfLaNzE is offline  
Old 07/20/2014, 14:50   #14
 
elite*gold: 0
Join Date: Jun 2014
Posts: 21
Received Thanks: 7
Quote:
Originally Posted by Masterkroko1 View Post
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.

PHP Code:
$users = array("testUser1","testUser2","testUser3");

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;

lg.

---------------------------------------------------------------------

Quote:
Originally Posted by KoKsPfLaNzE View Post
Hallo,

bau gerade aktuell an einer kleinen OpenSorucePage..
er macht grade erst den Umstieg von Proz zu OOP für das meiste wird er keine Verwengung finden, mir gefällt aber deine Idee.
kyls is offline  
Old 07/20/2014, 16:13   #15
 
elite*gold: 0
Join Date: Jul 2010
Posts: 283
Received Thanks: 16
So ich mach jetzt erstmal

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
Masterkroko1 is offline  
Reply


Similar Threads Similar Threads
[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



All times are GMT +2. The time now is 11:47.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.