"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

PHP: Anwenderaktionen nachvollziehen

DJ_Cyberdance 13.11.2006 - 23:58 826 3
Posts

DJ_Cyberdance

Here to stay
Avatar
Registered: Jun 2002
Location: Vesterålen
Posts: 1838
Hallo!
Folgendes Problem: Ich hab ein kleines CMS über mehrere Tabellen, in einer davon sind alle Benutzer abgelegt. Diese kann man natürlich auch löschen, von unterschiedlichen Seiten weg. Jetzt stell ich mir die Frage, wie ich den Browser automatisch zu einer Seite weiterleite, nachdem zB ein Benutzer gelöscht ist.

Beispiel:
Seite mit allen Benutzern => Details zu einem Benutzer anzeigen => Benutzer löschen
ist genauso möglich wie
Seite mit allen Benutzern => Benutzer löschen

Ein simples history.back() oder $_SERVER["HTTP_REFERER"] ist nicht immer möglich, siehe erstes Beispiel, denn hier würde der Browser zurückspringen zu der Seite mit den Benutzerdetails - der Benutzer existiert aber nicht mehr, dh. entweder gibts einen Fehler oder die Seite zeigt nicht viel an, aber ich müßte den Benutzer dorthin weiterleiten, von wo er wiederum diese Seite aufgerufen hat.

Ich hoffe, das Problem ist halbwegs verständlich geschildert. Ich hatte das gleiche Problem schon mal und hab einige Session-Variablen angelegt. Um die werd ich wahrscheinlich eh nicht herumkommen, aber wie mach ich das möglichst einfach?

Geht das eventuell mit einem Array, in dem quasi die History drinsteht? Ich hab mir auch überlegt, einen Datentyp für eine Liste oder einen Stack zu basteln, wobei ich nicht weiß, ob PHP5 selbstdefinierte Klassen bzw. deren Instanzen in Session-Variablen zuläßt.

Hat noch jemand Ideen zu diesem Thema...?

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
natürlich, jede variable kann in einer session abgelegt werden. bei meinem neuesten werk werden eigentlich alle wichtigen objekte (applikation, menu, module, ..) darin abgelegt.

wenn du probleme mit dem ablauf deiner applikation hast, dann würde ich mir auch über die intuitive handhabung gedanken machen. ich finde es zB nicht so logisch einen benutzer im detailfeld zu löschen, das könnte genauso gut auch über die liste gemacht werden (und dort gleich zusätzlich mit einer checkbox option für unterschiedle aktionen auf mehrere einträge - a la phpmyadmin).

in deinem fall scheint es aber sowieso einfach zu sein, weil du immer auf die "seite mit allen benutzern" zurück musst. wenn du mehrere tabellen hast und die immer denselben ablauf haben, dann kannst du dies mit php5 auch noch erstklassig abstrahieren.

ich kombiniere dabei immer mod_rewrite mit speziellen php ojekten (zB module oder plugins), die selber definieren wann sie "gemeint" sind. das erleichtert die handhabung mit internen links und regelt jegliche abhängigkeiten (wie zB namesänderungen der links).

DJ_Cyberdance

Here to stay
Avatar
Registered: Jun 2002
Location: Vesterålen
Posts: 1838
Zitat von mat
natürlich, jede variable kann in einer session abgelegt werden.
Cool, thx, bei PHP4 ging das AFAIR nicht so besonders...
Zitat

wenn du probleme mit dem ablauf deiner applikation hast, dann würde ich mir auch über die intuitive handhabung gedanken machen. ich finde es zB nicht so logisch einen benutzer im detailfeld zu löschen, das könnte genauso gut auch über die liste gemacht werden
Das war ja nur ein Beispiel. In der Praxis ist beides möglich, sowohl aus der Liste als auch aus dem Detailfeld löschen.
Zitat

in deinem fall scheint es aber sowieso einfach zu sein, weil du immer auf die "seite mit allen benutzern" zurück musst. wenn du mehrere tabellen hast und die immer denselben ablauf haben, dann kannst du dies mit php5 auch noch erstklassig abstrahieren.
Naja, bedingt einfach - bei den Benutzern schon, aber es gibt auch völlig andere Aktionen, die von unterschiedlichen Seiten aufgerufen werden können. Hast Du bezgl. Abstraktion ein paar Tips, wie ich das in Hinblick auf Reusability möglichst schlau mache?
Zitat

ich kombiniere dabei immer mod_rewrite mit speziellen php ojekten (zB module oder plugins), die selber definieren wann sie "gemeint" sind. das erleichtert die handhabung mit internen links und regelt jegliche abhängigkeiten (wie zB namesänderungen der links).
Hm, da muß ich mich mal schlau machen, mit mod_rewrite hab ich mich noch nicht auseinandergesetzt.

Danke Dir auf jeden Fall für Deine ausführliche Antwort!

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
Zitat
Naja, bedingt einfach - bei den Benutzern schon, aber es gibt auch völlig andere Aktionen, die von unterschiedlichen Seiten aufgerufen werden können. Hast Du bezgl. Abstraktion ein paar Tips, wie ich das in Hinblick auf Reusability möglichst schlau mache?
am besten du führst dir ein buch diesbezüglich zu gemüte. die meisten design patterns sind problemlos auf php5 anwendbar, sogar oftmals in einer erleichterten form, da php ja eine "typefreie" sprache ist. allgemeine tips dafür holst du dir besser aus einem buch, grundsätzlich solltest du bei jedem c&p von code darüber nachdenken ob sich eine abstraktion lohnen würde. dies hängt allerdings von vielen faktoren ab, die man mit der zeit lernt einzuschätzen.

@mod_rewrite: solltest du auf alle fälle genauer anschauen, ich kann einfach nicht glauben, dass ich früher ohne ausgekommen bin ;)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz