| | | | |
| |||||||
| Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Moderator Registriert seit: 11.05.2008
Beiträge: 6.069
![]() ![]() ![]() ![]() ![]() ![]() ![]() | Hallo, in deinem Controller-Plugin ist mir aufgefallen, dass du den Login oder Logout an eine bestimmte Controller-Action koppelst. Das finde ich nicht so gut. Koppel Login und Logout doch einfach an einen Request-Parameter. So kannst du dich auf jeder Seite deiner Website ein oder ausloggen ohne die Seite zu verlassen. Man koennte deinen Code zwar so manipulieren, dass es immernoch geht (naemlich in dem ein anderes Action-Plugin die Request-Parameter module/controller/action bei einem entsprechenden Parameter neu setzt, so dass dein Action-Plugin es entsprechend deiner Abfrage ($action = "logout" ..) korrekt auswertet, aber das waere doch etwas unsinnig. Ausserdem finde ich es unschoen, dass du 2x die $module, $controller und $action Variablen rausschreibst. Ich habe das etwa so im dispatchLoopStartup(): PHP-Code: Grundsaetzlich ist mir das bei dir zuviel statischer Codeaufruf. Benutzt doch normale Instanzen und die Zend_Registry oder die FrontController-Parameter?! Irgendwo im Code hast du auch noch ein $_SESSION stehen, das sollte da auch nicht sein. Zu deiner Auth, finde ich relativ unflexibel mit customer, admin, default. Bei unserem aktuellen System haben wir Besucher, Gaeste, Benutzer, 3-4 erweiterte Benutzer und 2 Admintypen. Wie wuerdest du das bei dir aendern? Durch Codeaenderung? Deine ACL sollte die Rollen und Rechte aus der DB holen und entsprechend die Aufrufe, die fuer die aktuelle(n) Benutzerrechte nicht gelten auf deinen Error-Controller weiterleiten. So brauchst du nur in der DB oder einem Interface anhaken Objektbearbeiter darf Objekte bearbeiten und dann hat er die Rechte auch sofort, ohne Codeaenderung. Du legst ja wie ich das sehe codeseitig fest, was eine Rolle darf, oder? (Bos_Auth_*) Weitere Anmerkung: PHP-Code: Deine Texte musst du dringend mal aus deinem Code raushalten. Zend bietet dir fast ueberall ein Zend_Translate an, notfalls holst du dir ueber den ViewRenderer den View und kannst den Zend_View_Helper_Translate ansprechen: PHP-Code:
__________________ "Nuschel ich?" - "Was?" Geändert von Chriz (22.07.2010 um 22:43 Uhr). |
| | |
| | |
| Moderator Registriert seit: 11.05.2008
Beiträge: 6.069
![]() ![]() ![]() ![]() ![]() ![]() ![]() | Und nochwas: benutz kein is_null(), === null ist viel schneller! Ausserdem benutz besser kein strtolower(), mb_strtolower() ist zukunftssicherer. Weiterhin mag ich dein $band->nId nicht. Das ist eine public-Property oder __get? Beides Murgs in meinen Augen. Warum? Entweder setzt du mit __set/__get eh nur direkt Werte in einem Array, dann kannst du gleich auf public properties setzen, ist zudem noch schneller, oder aber du verteilst wieder auf andere setter/getter-Methoden - warum dann nicht gleich diese setter/getter Methoden verwenden? Falls du eine generische Verarbeitung moechtest, benutz einen Codegenerator, dann ist dein Code auch schneller. PS: Wenn ich hier viel zu meckern finde, heisst das nicht, dass ich deinen Code schlecht finde Ist aber ja immer so...
__________________ "Nuschel ich?" - "Was?" |
| | |
| | |||||||||
| Erfahrener Benutzer Registriert seit: 28.05.2008
Beiträge: 1.896
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() | Hi, danke für die vielen Anmerkungen! Zitat:
Zitat:
edit: ich sehe gerade, bei dir ist das über Post Parameter gelöst, während ich das über die URL oder über controller forwarding löse. Muss ich mir nochmal anschauen. Zitat:
Zitat:
Sind jetzt 3 Module (customer, admin, default), wobei da sicher noch mehr hinzukommen. Der Fallback deswegen, da der Modulcode nicht zwangsweise von mir stammen muss. Jedes Modul hat beliebig viele eigene Benutzerrollen, wobei ich "guest" überall als Standardrolle "nicht eingeloggt" spezifiziert habe.Zitat:
Das ist alles nur Auth, Bos_Acl erledigt das mit der von Auth gelieferten Benutzerrolle, wobei die ini nach dem Modulnamen benannt ist. Vom Grundaufbau her hatten wir beide das Plugin ursprünglich mal fast gleich mit änhlichen Methoden. Dein _doLogin wollte ich eben raushalten und je nach Modulnamen laden, da ich nicht für die Zukunft bestimmen wollte, wie ein anderer Programmierer den Auth machen will. Zitat:
PHP-Code: Zitat:
![]() Zitat:
PHP-Code: Arrays wollte ich ursprünglich mal hernehmen. Hatte aber mMn. keine Vorteile, wenn ich die Bandid nicht als arraykey festlegen kann, da php die Eigenschaft hat, dann dementsprechend viele leere array-Elemente anzulegen (so dass das array unglaublich viel mehr Speicher braucht). Hat das Performance- Vorteile, wenn ich das in der session als array hinterlege und rekursiv durchlaufe? Wie löst du denn die Abhängigkeiten, die aus den Datenbankfeldnamen resultieren, auf? Danke und Grüße Basti Geändert von rudygotya (23.07.2010 um 02:32 Uhr). | ||||||||
| | |
| | |
| Erfahrener Benutzer Registriert seit: 30.07.2008
Beiträge: 1.129
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() | Das ist zwar für das Thema hier mittlerweile obsolet, aber den Controller würde ich "Auth" oder so und nicht "Login" nennen. Ich wusste gar nicht, dass man für verschiedene Module verschiedene Benutzergruppen benutzen kann.. |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 28.05.2008
Beiträge: 1.896
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() | Hab den Controller umbenannt, macht def. mehr Sinn. Hab das eben überarbeitet, danke für eure Inputs. Hier das überarbeitete Plugin. Den Fallback habe ich auch rausgenommen und durch eine Exception ersetzt. PHP-Code: PHP-Code: Geändert von rudygotya (31.07.2010 um 16:07 Uhr). Grund: unsinnigen parameter entfernt |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| HMVC-Umsetzung mit dem APF | dr.e. | Software-Design | 6 | 13.07.2010 18:03 |
| Maps Modul in Joomla wird nicht richtig angezeigt | Coldstorm | PHP Tipps 2010 | 3 | 28.06.2010 14:42 |
| WebDAV Auth Digest | dunst0 | Server, Hosting und Workstations | 1 | 17.09.2009 22:52 |
| [Erledigt] PHP in Console | lithium | Server, Hosting und Workstations | 16 | 25.06.2009 00:52 |
| Suche Programmierer für Blinddating Modul | hannover96 | Beitragsarchiv | 3 | 17.04.2009 07:31 |
| [Erledigt] Modul Installer (ordner anlegen, entpacken - egal ob Safe Mode ON/OFF!) | Nightuser | Scriptbörse | 6 | 01.07.2008 13:30 |
| Performanceprobleme - PHP als Modul laden? | pcschröda | Server, Hosting und Workstations | 1 | 25.07.2006 11:23 |
| php modul wird nicht gefunden | ff-webdesigner | Server, Hosting und Workstations | 6 | 13.11.2005 17:39 |
| Community in Modulen programmieren | Beitragsarchiv | 3 | 29.07.2005 17:17 | |
| php als modul oder cgi? | jens76 | Server, Hosting und Workstations | 7 | 01.03.2005 01:19 |
| Modularer Aufbau, wie? | PHP-Fortgeschrittene | 26 | 31.01.2005 20:16 | |
| RewriteRule im PHP Modul | PHP Tipps 2004 | 1 | 11.09.2004 12:42 | |
| php Modul LDAP nachinstallieren | PHP Tipps 2004 | 2 | 27.08.2004 18:20 | |
| [Erledigt] PHP Modul in Apache laden | Server, Hosting und Workstations | 4 | 09.08.2004 11:36 | |
| PHP LDAP Modul nicht gefunden | Server, Hosting und Workstations | 0 | 29.06.2004 14:02 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| zend auth module, aktivierungsmail zend, auth controller in verschiedenen modulen verwenden, zend getcontrollers, zend framework aktivierungsmail, zend acl auth, zend_auth module, zend auth setstorage getstorage, band generischen, zend auth fallback, zend fallback setmodulename, joomla ldap active directory benutzername und passwort falsch oder das benutzerkonto existiert noch nicht!, zend framework defaultmodul controller im application ordner nicht mehr erreichbar, zend_auth_storage_session performance, zend auth angemeldet bleiben, zend framework acl für module, $this->_hasparam() in action helfern zend, sebastian sauer, aktiveirungsmail zend framework, info@dynpages.de |