php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Jobs und Projekte > Projekthilfe
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


Projekthilfe Hier könnt Ihr eine Art Projekthilfe anfordern. Unter Projekthilfe verstehen wir Angebote bei denen KEIN Geld gezahlt werden kann.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 28-10-2005, 14:10
firstlord18
 Member
Links : Onlinestatus : firstlord18 ist offline
Registriert seit: Nov 2004
Ort: Germany
Beiträge: 310
firstlord18 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Mein erstes OOP Projekt: Login Klasse!

Hallo,

naja, ich habe mir vorgenommen, OOP zu lernen. Kurzerhand habe ich eine Login Funktion geschrieben! Das Zip-Archiv ist im Anhang! Kritik, Bugreports, Verbesserungsvorschläge etc, bitte hier!

Hier der Readme-Ausschnitt aus login_class.php:

PHP-Code:
<?php
/********************************************************
 *
 * 
 * Login_class.php Version 1.4
 * (28.10.2005)
 * 
 * Known Bugs:
 *    -  Keine
 *   
 * ToDO:
 *    -  Nichts. Aber nicht zögern, mir zu schreiben
 *       falls Ihr Wünsche etc habt!
 *
 ********************************************************
 * 
 * Dieses Script darf frei kopiert und modifiziert
 * werden! Der Hinweiß auf den Autor darf nicht
 * entfernt werden! 
 *
 ********************************************************
 * 
 * Features:
 *    -  einfache Installation
 *    -  Supervisor, welcher direkt in dieser Datei
 *       angepasst werden kann! Hat immer Zugriff 
 *         als Admin!
 *    -  Benutzung von Sesseions und/oder Cookies
 *       zur Authentifizierung!
 *    -  Debugging ein- bzw ausstellbar!
 *    -  Cookiedauer festlegbar!
 *      -  Cookiename einstellbar!
 *    -  Maximale Anzahl an fehlgeschlagenen
 *         Logins in einer bestimmten Zeitspanne 
 *       einstellbar!
 *      -  Einfach Verwendung (Siehe Anwendungsbeispiele!)
 *    -  Bei jedem Aufruf einer Secret Area wird 
 *       überprüft, ob der User das Recht hat, die Page
 *       zu sehen!
 *    -  Bestimmte Bereiche festlegbar, welche nur 
 *       Admins sehen dürfen!
 *    -  Falls ein User ohne Authentifizierung eine
 *       geschützte Seite aufruft, wird das Login
 *       Formular auf dieser Seite angezeigt und
 *       er ist danach auch direkt auf dieser Seite!
 *    -  Anti-Hacker Schutz mit Simulierung einer
 *       variablen Antwortzeit des Servers, um Massen-
 *       requests zu blocken!
 *    -  Failed-Login Logs werden nach einem Tag gelöscht
 *
 ********************************************************
 *
 * Installation:
 *    -  Die Variablen unter diesem Kommentar anpassen!
 *    -  Es werden nur 2 MySQL tabellen benötigt. Die 
 *       install.php ausführen (es werden nun die Tabellen 
 *       angelegt), und danach unbedingt LÖSCHEN!
 *    -  Als Supervisor einloggen (Daten können in dieser
 *       Datei geändert werden ($cfg['user'],$cfg['pass']))
 *       und neue User/Admins erstellen!
 *
 ********************************************************
 *
 * Verwendung:
 *    -  Bitte die Datei login_class.php am Anfang der 
 *       Seite einbinden! z.b. require_once('login_class.php');
 *    -  In eine Seite mit geschütztem Inhalt folgendes einfügen,
 *       um den User zu überprüfen! Falls die Überprüfung
 *       fehlschlägt, wird das Formular angezeigt:
 *
 *             ********** CODE: ***********
 *             if( !($auth->may_person_view()) ) {
 *                $auth->show_redirect_form();
 *                exit();
 *            }
 * 
 *     -  Bitte die Datei admin.php in das Verzeichnis
 *        der zu schützenden Seite kopieren!
 *     -  Falls man Admin Rechte hat, bekommt man ein Link
 *        zu admin.php angezeigt, wo ma User erstellen
 *        und löschen kann! 
 *       -  Admin Bereiche lassen sich wie folgt schützen:
 *
 *           ********** CODE: ***********
 *            if( $auth->secureAdmin() ) {
 *                // ...Admin Bereich
 *            }    
 *
 *      -  Der Logout wird wie folgt aufgerufen:
 *             $auth->doLogout(); 
 *
 *      -  Also nochmal ein ganzes Beispiel:
 *
 *          <?php
 *            include('login_class.php');            
 *                    
 *            if( !($auth->may_person_view()) ) {
 *                $auth->show_redirect_form();
 *                exit();
 *            }    
 *
 *          // Ab hier fängt der Bereich an,
 *          // den eingeloggte User/ Admins sehen:
 *
 *            if($_GET["kill"] == "yes")
 *                $auth->doLogout();
 *                
 *            echo "Hallo User!";        
 *
 *            if( $auth->secureAdmin() ) {
 *                // Diesen Bereich zwischen den
 *              // geschweiften Klammern sehen nur
 *              // Admins!
 *            
 *            }
 *            
 *            // Das hier sehen nun auch wieder die
 *          // Normalen User:
 *
 *          // Link zum Logout!
 *          echo "<br><a href='?kill=yes'>logout!</a>";
 *            ?>
 *
 ********************************************************
 *
 * Bei Fragen, Kritik, Lob, Verbesserungsvorschlägen,
 * Bugreports etc, bitte entweder eine Email an mich
 * oder im ICQ melden, oder auf nsane.de vorbeischauen!
 *
 * Und nun viel Spaß bei der Benutzung!
 *
 ********************************************************/

EDIT: NEUE VERSION 1.2:
PHP-Code:
<?php
 
/********************************************************
 * CHANGELOG:
 *    v1.1 to v1.2:
 *    -  Man kann festlegen, ob man Notices angezeigt 
 *       haben möchte, oder nicht!
 *    -  Überprüfung auf install.php, sodass das Script
 *       nicht läuft, wenn man diese nicht gelöscht hat!
 *    -  Die install-Funktion wurde aus der Klasse entfernt
 *       und ist nur noch in der install.php enthalten
 *    -  Bugfix im SQL der Fkt db_install() wurde behoben!
 *    -  Alle Notices entfernt!
 *
 *********************************************************/
?>
EDITENDE

Edit²
Neue version 1.3, Changelog:
PHP-Code:
 /********************************************************
 * CHANGELOG:
 *    v1.2 to v1.3:
 *    -  Bei Cookiebasiertem Login werden die Daten nun 
 *       in nur einem Cookie gespeichert! Dazu werden sie
 *       zu einem String zusammengefügt, getrennt durch einen
 *       Seperator!
 *    -  Cookie-String-Seperator lässt sich einstellen.
 *    -  Pfad, in dem Cookie gilt, lässt sich nun auch
 *       bei den $cfg - Variablen anpassen!
 *    -  kleinen Bugfix. PHPSESSID-Cookie wird nun nur
 *       gelöscht, falls Sessions aktiviert sind!
 *    -  Weitere Notices behoben!
 *
 *********************************************************/
?> 
Editende!


Edit³
Neue version 1.4, Changelog:
PHP-Code:
/********************************************************
 * CHANGELOG:
 *    v1.3 to v1.4:
 *    -  großer Bugfix. Und zwar werden die Variablen nun
 *       nicht per global definiert und dann in die Klasse
 *       geladen, sondern in richtigem OOP stil an den
 *       Konstruktor übergeben!
 *
 *********************************************************/
?> 
Editende!

Ich hoffe, es gefällt euch!
Und für mein erstes Projekt find ich das ganz ordentlich!


mfg
björn

p.s.: ich habe von keinem einzigen anderen Login Script abgeschaut

Edit: Warum kann ich keinen Anhang mehr ändern? Naja dann eben auf meinem privaten Hosting!
login class 1.4

Geändert von firstlord18 (07-08-2007 um 11:55 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 28-10-2005, 19:36
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

wieso verwendest du global in verbindung mit einer class? böse!
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #3 (permalink)  
Alt 28-10-2005, 21:05
firstlord18
 Member
Links : Onlinestatus : firstlord18 ist offline
Registriert seit: Nov 2004
Ort: Germany
Beiträge: 310
firstlord18 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Abraxax
wieso verwendest du global in verbindung mit einer class? böse!
hm, wo mache ich das? meinst du, dass ich $cfg in den mthoden als global definiere?
Naja, sry, aber wie gesagt, ist mein aller aller erstes OOP Projekt, ohne jegliches Tutorial und ohne bei anderen abzuschauen! Also klärt mich ruhig auf Danke

achso, btw, neue version!
Mit Zitat antworten
  #4 (permalink)  
Alt 28-10-2005, 21:21
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

solche dinge werden an die class übergeben. aber niemals mit global.

und wo wir grad dabei sind ... ich halte es für besser, deinen thread aus den code-schnipsel - wo eigentlich fertige scripte liegen - in die projekthilfe zu schieben. ok?
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #5 (permalink)  
Alt 28-10-2005, 21:33
firstlord18
 Member
Links : Onlinestatus : firstlord18 ist offline
Registriert seit: Nov 2004
Ort: Germany
Beiträge: 310
firstlord18 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hm, ne, finde ich eigentlich nicht ok, da ich finde, dass das Script eigentlich ziemlich gut ist. Sonst sind doch kaum/keine Fehler drin!

Edit: http://www.php-resource.de/forum/sho...threadid=58154 wurde trotz sowas wie global $_COOKIE; nicht verschoben ...

Ich kanns ja auch noch ändern, will das ja richtig machen!

Wie wärs, wenn ich einfach den Konstrukto so mache function login($par), dann ein neues Objekt so erstelle: $auth = new login($cfg); und dann kann ich ja im konstruktor allen klasseninternen variablen die werte aus $par zuweißen! wäre doch dann gut oder?

Geändert von firstlord18 (28-10-2005 um 21:37 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 28-10-2005, 21:48
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

wenn der thread hier eine diskussion wird, wie du was machen sollst, ist es kein code-schnipsel mehr, sonder automatisch eine projekthilfe!

Zitat:
trotz sowas wie global $_COOKIE; nicht verschoben ...
darum geht es nicht1
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #7 (permalink)  
Alt 28-10-2005, 21:55
firstlord18
 Member
Links : Onlinestatus : firstlord18 ist offline
Registriert seit: Nov 2004
Ort: Germany
Beiträge: 310
firstlord18 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja ok, stimmt! naja ich habe das script ja getestet! und es funzt einwandfrei! wenn nun aber jmd den ein oder anderen ratschlag etc hat (so wie das doch auch in anderen threads zu sehen ist, dass leute sich dazu äußern), kann ich das doch noch ändern/hinzufügen!

naja, was sagst du dazu, was ich da oben geschrieben habe, dass ich einfach $cfg an das objekt übergebe, anstatt das mit gloabl zu machen, und dann die variablen zuzuweißen? ist das dann richtig?

Edit: naja habe das nun so in OOP stil gemacht, dsas die Daten per Parameter an den konstruktor übergeben werden!

1st post updated!

Geändert von firstlord18 (28-10-2005 um 22:10 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 29-10-2005, 12:30
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wo du schon dabei bist:
- nimm die datenbank-geschichten daraus und pack diese in eine eigene class. sonst machst du den _db_connect-kram jedesmals aufs neue oder doppelt, wenn du mehrere klassen nutzt.
-- entweder mit extends arbeiten oder eine referenz auf das datenbankobjekt weiterreichen.

- echo und html-code hat imho überhaupt nichts in einer klasse zu suchen. eigentlich sollten nur werte retourniert werden. die ausgabe-formatierung übernimmt i.d.R. deine template-class.

damit hättest du dann schon 3 klassen

*ich verschieb dann mal, dann bin ich das a*****och *
__________________
Kissolino.com
Mit Zitat antworten
  #9 (permalink)  
Alt 29-10-2005, 14:59
firstlord18
 Member
Links : Onlinestatus : firstlord18 ist offline
Registriert seit: Nov 2004
Ort: Germany
Beiträge: 310
firstlord18 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hm, also schreibe ich eine mysql klasse, in die ich alles reinpacke, wie z.b.:

PHP-Code:
<?php
class mysql_conn {
   
//...
}
?>
und wie kann ich nun darauf in meiner login klasse zurückgreifen?

Wie kann ichs machen, dass user auswählen, ob sie meine klasse verwenden, oder eine eigene klasse?
edit:
wie wärs so:

PHP-Code:
<?php
// self eintragen, wenn eigene connection bzw eigene klasse 
// verwendet wird, ansonsten this eintragen!
$cfg['how2conn'] = 'self'

// das hier nur ändern, wenn self eingetragen:
// entweder $link, oder handle zur klasse, wie z.b. 
// new myconnection(); eintragen
$cfg['yourconn'] = $conn



// und dann letztendlich das handle auswählen:
if($cfg['how2conn'] == "this")
        
$cfg['conn'] = new mysql_conn($conn_settings);
elseif(
$cfg['how2conn'] == "self")
        
$cfg['conn'] = $cfg['yourconn'];

?>
wäre das so gut, oder wie mache ich das anders, dass der user seine eigene klasse, bzw sein eigenes connection handle, aber auch meine klasse verwenden kann?
/editende


/edit²
hm, wenn ich aber jmd anderen frei lasse, ob er seine eigene mysql klasse verwendet, dann würde ja meine login klasse nicht mehr funzen, da diese nun so kosntruiert ist, dass sie auf bestimmte methoden meiner mysql klasse zugreift. benutzt jmd nun seine eigene mysql klasse, dann heißen demjenign seiten methoden eventuell auch anders :/
och mann, ich weiß echt net, was ich machen soll ...
/editende²

un ne tpl classe bräcuhte ich doch eigentlich nich, oder? ich könnte einfach echo durch return ersetzten, und dann statt $auth->show_form() einfach echo $auth->show_form() schreiben!

Geändert von firstlord18 (29-10-2005 um 16:03 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 01-11-2005, 20:03
firstlord18
 Member
Links : Onlinestatus : firstlord18 ist offline
Registriert seit: Nov 2004
Ort: Germany
Beiträge: 310
firstlord18 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das nenn ich mal Projekthilfe ... :\
Mit Zitat antworten
  #11 (permalink)  
Alt 01-11-2005, 23:46
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von firstlord18
Wie kann ichs machen, dass user auswählen, ob sie meine klasse verwenden, oder eine eigene klasse?
gegenfrage ... was interessiert dich das?

oop bedeutet, dass DU DEINEN code wiederverwenden kannst ... wenn du nur was für die codeschnipsel oder fürs scriptarchiv schreiben willst, denk dir was aus, das unabhängig von anderen klassen/code-fragmenten läuft.

anders herum: wenn es die universelle klassenstruktur gäbe, die db-abfragen, usermanagement, template-handling etc. pp. abdeckt, warum solltest du das noch selber coden?

zu deinem "problem":
1. die idee, objekte in einem array abzulegen ist sicher nicht verkehrt
2. such mal nach referenzen ... auch interessant
3. wenn deine login-class eine sql-class benötigt, stell sie mit zur verfügung
__________________
Kissolino.com
Mit Zitat antworten
  #12 (permalink)  
Alt 02-11-2005, 15:09
firstlord18
 Member
Links : Onlinestatus : firstlord18 ist offline
Registriert seit: Nov 2004
Ort: Germany
Beiträge: 310
firstlord18 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zu Punkt3:

du sagtest doch, dass es dumm sei, wenn ich ne mysql class mit einbaue, denn wenn leutz schon ne eigene haben, dann müssen sie 2 connections aufbauen ...
und genau deswegen frage ich. wenn ich nun das so schreibe, dass andere klassen für die connection verwendet werden sollen, dann geht das ja net, da ich net weiß, wie die methoden der anderen heißen...

>oop bedeutet, dass DU DEINEN code wiederverwenden kannst
na dann geht das so ja, weil ich kann das so eigentlich gut wiederverwenden ....


so, und warum kann man des so eigentlich net bei codeschnipsel lassen? user können des doch wunderbar verwenden. ich denke nicht, dass da irgendwas nicht funzt. eigentlich is die klasse fertig ...
Mit Zitat antworten
  #13 (permalink)  
Alt 29-10-2009, 17:28
romolus88
 Registrierter Benutzer
Links : Onlinestatus : romolus88 ist offline
Registriert seit: Oct 2009
Beiträge: 2
romolus88 befindet sich auf einem aufstrebenden Ast
Standard

Hallo Community,

Die Login Klasse auf der Website ist leider down...

Könnte Sie jemand von Euch, der sie noch hat, bitte zuschicken?

Wäre echt super.

Vielen Dank schonmal..

so long,

romolus88
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:35 Uhr.