turk porno porno escort rokettube
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 20 von 28

Thema: Bester Weg zum "zurückfinden"

  1. #1
    Erfahrener Benutzer
    Registriert seit
    16.07.2007
    Beiträge
    186
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard Bester Weg zum "zurückfinden"

    Hallo!

    Ich hab folgendes Problem: Im Header gibt es ein Anmeldeformular (oder wenn man angemeldet ist einen logout-Link) und die Action zeigt auf /user/dologin bzw. /user/dologout

    Nun möchte ich aber, dass sofort nach den "do"-Aktionen auf die Seite redirectet wird von man vorher war.
    Wie regelt man das am besten?? $_SERVER['HTTP_REFERER'] kommt mir in ZF-Zeiten nicht mehr zeitgemäß vor. Das ganze in einer Session speichern ist fehleranfällig.

    Aber ich möchte dann noch einen Schritt weitergehen: Angenommen der Login schlägt fehl, soll sich das System solange die Seite merken, von der man kam, bis der Login ggf. erfolgreich verlaufen ist (d.h. nach dem erfolgreichen Login sollte man wieder dorthin zurückkommen wo man die Loginversuche angefangen hat).

    Wie löse ich das am besten? Wie löst ihr das?

    mfg,
    divB

  2. #2
    Erfahrener Benutzer
    Registriert seit
    10.01.2007
    Beiträge
    343
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    1.
    $_SERVER['HTTP_REFERER'] kommt mir in ZF-Zeiten nicht mehr zeitgemäß vor.
    mir schon... noch hat das ZF nicht HTTP ersetzt ...
    2. speicher die redirect-url als hidden-input im formular. wenn dann beim 2. versuch der referrer natürlich der login ist, setzte wieder den alten (aus $_POST)....

    so würde ich es im groben machen. gegenvorschläge?

    mfg
    shox

    btw: Session? was willst da loggen? letzte aufgerufene seite? \o/
    oO

  3. #3
    Erfahrener Benutzer
    Registriert seit
    28.12.2006
    Beiträge
    9.966
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Ich mach ja gerne mal "Thementitel und was mir darauf einfällt" Diesmal: "Bester Weg zum Zurück finden --> Eine Schnur "
    Zitat Zitat von divB
    Nun möchte ich aber, dass sofort nach den "do"-Aktionen auf die Seite redirectet wird von man vorher war.
    Werde ich unten drauf eingehen.
    Zitat Zitat von divB
    Wie regelt man das am besten?? $_SERVER['HTTP_REFERER'] kommt mir in ZF-Zeiten nicht mehr zeitgemäß vor.
    Is auch Müll geworden, seitdem jeder Dulli dies manipuliert -.-
    Zitat Zitat von divB
    Das ganze in einer Session speichern ist fehleranfällig.
    Öhm ... Hä? Oo Kommt natürlich darauf an, was du wie in einer Session speicherst Aber solange du selbst keine Fehler reinspeicherst, sollte es nicht fehleranfällig sein
    Zitat Zitat von divB
    Aber ich möchte dann noch einen Schritt weitergehen: Angenommen der Login schlägt fehl, soll sich das System solange die Seite merken, von der man kam, bis der Login ggf. erfolgreich verlaufen ist (d.h. nach dem erfolgreichen Login sollte man wieder dorthin zurückkommen wo man die Loginversuche angefangen hat).
    Klingt sinnig
    Zitat Zitat von divB
    Wie löse ich das am besten?
    kA
    Zitat Zitat von divB
    Wie löst ihr das?
    So, nun mein Part. Hab mir da scho was überleg, wenn auch noch net implementiert.

    Meine Idee wäre ein Stack mit "Drop", wenn man so will. Also ich habe ein Stack (array) mit maximal x (sagen wir 10) Elementen und das speicher ich (Session). Als jedes mal, wenn nun eine Seite aufgerufen wird, werden dessen Request-Infos gespeichert (überlege noch, was da so wichtig sein kann ^^). Wenn es mehr als 10 Einträge sind, werden die letzten Seiten weg geworfen.
    Dann habe ich also eine Liste der letzen 9 Seiten plus der Aktuellen, wobei diese den Index 0 hat, die letzte Seite 1, die davor 2 usw bis Index 9 eben. Wenn ich nun zur letzten Seite springen möchte, dann hole ich die Request-Infos für Index 1 (weil sich in der Zwischenzeit die aktuelle Seite auch mit eingetragen haben sollte), verwefe die Einträge 0 und 1 (weil diese ja jetz gewissermaßen in der Zukunft liegen) und bastel mit aus den Infos eine Umleitung. Nach der Umleitung hat sich die alte neue Seite wieder als aktuelle mit Index 0 eingetragen.
    Es macht durchaus Sinn mehr als 1 Seiten vorhergehend zu sichern, weil einzelne Situationen vielleicht gerne weiter in die Vergangenheit reisen wollen. Zum Beispiel Eintrag bearbeiten: Übersicht --> Bearbeiten --> Abschicken. Wenn die letzte Seite nun einfach einen Schritt zurück geht, landet sie wieder bei der BEarbeiten-Seite, was ziemlich unnötig ist. Dann doch lieber gleich zur Übersicht (2 Seiten zurück).
    Ob nun 9 Seiten in die Vergangenheit wirklich notwendig ist, mag fraglich sein, aber es lässt sich damit auch (begrenzt) ein wunderbares "Back"- bzw "History"-Feature realisieren, welches ohne Zurück-Button des Browser auskommt
    Je nach Umsetzung lässt es sich auch erweitern: Dass man zB mehrfache hintereinander liegende identische Seiten zu einer zusammenfasst (passiert bei Reload), oder das man bestimmte Seiten pauschal auslässt (zB "Sie werden jetzt weiter geleitet"). Oder das man nach besonderen Ereignissen den Stack komplett leert (zB nach logout, um einen Sprung zu einer internen Seite garnicht erst möglich zu machen).
    Achja, Sprünge "ausserhalb des Stacks" führen pauschal zur Startseite


    Edit:
    Zitat Zitat von ShoX
    2. speicher die redirect-url als hidden-input im formular. wenn dann beim 2. versuch der referrer natürlich der login ist, setzte wieder den alten (aus $_POST)....
    Buh! Also langsam sollten wir uns einig sein, dass beim User auch wirklich nur das landen sollte, was er auch sehen soll/darf/muss.
    Geändert von KingCrunch (26.07.2007 um 00:25 Uhr)

  4. #4
    Erfahrener Benutzer
    Registriert seit
    10.01.2007
    Beiträge
    343
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Zum Beispiel Eintrag bearbeiten: Übersicht --> Bearbeiten --> Abschicken. Wenn die letzte Seite nun einfach einen Schritt zurück geht, landet sie wieder bei der BEarbeiten-Seite(...)
    Dann ist das ein Logik-Fehler deinerseits ....

    Entweder der user benutzt de back-button vom browser und du hast eh nix zu sagen (JS ausgenommen), oder er folgt deinen links .... und da steht dann Zum Beitrag / Zum Forum ... wo soll man sich da bitte redirecten?
    Ich weiss fix wo der post hinkommt und welche ID er hat .. also linke ich drauf. passt.
    nix history speichern.


    Je nach Umsetzung lässt es sich auch erweitern: Dass man zB mehrfache hintereinander liegende identische Seiten zu einer zusammenfasst (passiert bei Reload),
    Das Reload-Kriterium ist ne gute idee ... kann wichtig werden beim cachen etc. (eventuell *lol*)

    Buh! Also langsam sollten wir uns einig sein, dass beim User auch wirklich nur das landen sollte, was er auch sehen soll/darf/muss.
    Wieso?
    1. Der User weiß woher er kommt *rolleyes*
    2. Der User sieht nichts. Und wer im Quellcode schnüffelt, der kst kein User
    3. Ich brauche genau EINE SEITE - die, auf die ich redirecten will ... keine 20.
    Warum dann extra sessions und co, wenns so auch geht. Einfach - praktisch - handlich

    oder?
    oO

  5. #5
    Erfahrener Benutzer
    Registriert seit
    16.07.2007
    Beiträge
    186
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Also danke für eure Antworten. Bis jetzt hab ichs echt mit HTTP_REFERER gelöst - offenbar nicht so gut.

    Das, was King* beschrieben hat war genau das, was ich mit "Session" gemeint habe - eben in irgendeiner Weise den Weg in der Session zu speichern. Irgendwie kommt mir das sehr aufwändig und vor allem fehleranfällig vor (fehleranfällig weil ich sowas schon mal gemacht habe und nur Probleme damit hatte). Wenn ein User Cookies ausgeschaltet hat gibts sowieso ernstere Probleme...

    An das Formular von Shox hab ich gar nicht gedacht, das is ja eigentlich wirklich die günstigste Idee. Dem Argument dass das nicht zum User soll kann ich mich eher nicht anschließen. Der User sollte einfach nichts zu Gesicht bekommen womit er etwas anstellen könnte was eine Gefahr darstellen könnte (Serverpfade übergeben, SQL Abfragen übergeben uvm). Aber die redirect-URL ist ja nicht geheim und wenn der User sein Formular selbst abschickt und dabei die Request-Url ignoriert - mein Gott, selbst schuld wird er halt nicht weitergeleitet ;-)

    Aber dennoch noch ne kleine Frage. Wenn ich getRequest()->getRequestUri() aufrufe, bekomme ich eine absolute Url relativ zum Server, also z.B. "/~user/app/ctrl/action". Wenn ich das in $this->_redirect einsetze, bekomme ich einen ungültigen Request, denn er erstellt daraus folgende Url:

    http://server/~user/app/~user/app/ctrl/action

    Wieso?
    a) Wie bekomme ich die komplette Request-Uri?
    b) Wie mache ich das am besten?

  6. #6
    Erfahrener Benutzer
    Registriert seit
    10.01.2007
    Beiträge
    343
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    nimm HTTP_REFERRER ... ist afaik ne komplette uri ...

    zum getRequestUri kann ich nix sagen, habs noch ned beutzt.

    forward is aber auch cool

    mfg
    oO

  7. #7
    Erfahrener Benutzer
    Registriert seit
    28.12.2006
    Beiträge
    9.966
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Zitat Zitat von ShoX
    1. Der User weiß woher er kommt *rolleyes*
    Der User kann da eintragen, was er will, auch /admin/index. Bei Session brauchste dir über die Seriösität keine Gedanken machen
    Zitat Zitat von ShoX
    2. Der User sieht nichts. Und wer im Quellcode schnüffelt, der kst kein User
    Ne, aber gäbe es nur "User" bräuchten wir keine Captchas, E-Mail-Bestätigungen undundund
    Zitat Zitat von ShoX
    3. Ich brauche genau EINE SEITE - die, auf die ich redirecten will ... keine 20.
    Die "10" waren exemplarisch.
    Zitat Zitat von divB
    Das, was King* beschrieben hat war genau das, was ich mit "Session" gemeint habe - eben in irgendeiner Weise den Weg in der Session zu speichern. Irgendwie kommt mir das sehr aufwändig und vor allem fehleranfällig vor (fehleranfällig weil ich sowas schon mal gemacht habe und nur Probleme damit hatte). Wenn ein User Cookies ausgeschaltet hat gibts sowieso ernstere Probleme...
    Sessions brauch man auf kurz oder lang sowieso. Wenn jemand Cookies nun ausgeschaltet hat, ist er halt selbst Schuld und landet immer wieder auf der Startseite Fehleranfälligkeit sehe ich wie gesagt nicht ^^

  8. #8
    Erfahrener Benutzer
    Registriert seit
    10.01.2007
    Beiträge
    343
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Der User kann da eintragen, was er will, auch /admin/index. Bei Session brauchste dir über die Seriösität keine Gedanken machen
    Ne, aber gäbe es nur "User" bräuchten wir keine Captchas, E-Mail-Bestätigungen undundund
    JA UUUUUH xD wenn dein user per /admin/index reinkommt, dann sitzt das problem zwischen stuhl und bildschirm.
    Ja, dann manipuliert einer mein Formular ... ja OH MEIN GOTT!
    er kann sich hinleiten lassen WO ER WILL! das ist doch SCHRECKLICH!
    ob er jetzt die seite direkt aufruft oder per form ... o m f g
    (zur erklärung - im HTTP_REQUEST steht ne vollständige url .. nicht controller und action .. mh?)

    Ich weiss ja nicht für wie blöd du mich hälst

    mfg
    oO

  9. #9
    Erfahrener Benutzer
    Registriert seit
    16.07.2007
    Beiträge
    186
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Zitat Zitat von ShoX Beitrag anzeigen
    nimm HTTP_REFERRER ... ist afaik ne komplette uri ...

    zum getRequestUri kann ich nix sagen, habs noch ned beutzt.

    forward is aber auch cool
    1.) Hama doch grad besprochen das der HTTP_REFERER net so cool is weil ihn viele User manipulieren/ausschalten.
    Weiters lassen ihn viele Proxies net durch.
    2.) @forward: Forward hilft in diesem Fall gar nichts denn das lädt die Seite nicht neu (redirect) sondern lädt lediglich einen anderen Controller im *gleichen* Request. Ich will aber erreichen dass der User gefahrlos F5 drücken kann nach dem Abschicken des Formulars.

    Zitat Zitat von KingCrunch Beitrag anzeigen
    Der User kann da eintragen, was er will, auch /admin/index.
    Dann soll er das halt machen ;-) Selbst schuld, dann landet er dort, kann aber eh nichts anfangen weil sowieso immer *server*seitig (Session) Kontrollen gemacht werden müssen ob der User zu einer bestimmten Url darf.

    Zitat Zitat von ShoX Beitrag anzeigen
    [...]
    (zur erklärung - im HTTP_REQUEST steht ne vollständige url .. nicht controller und action .. mh?)
    [...]
    Was meinst du damit?


    Egal, das Problem ist das mein Problem noch persistiert :-(


    Also ich will ganz einfach die Url des *aktuellen* Requests (REQUEST_URI) abspeichern und danach dorthin redirecten.

    Sowohl $_SERVER['REQUEST_URI'] als auch $this->getRequest()->getRequestUri() liefern mir eine Url ohne Server (was ja prinzipiell sehr OK ist!):

    /~user/application/controller/action

    Nur warum funktionieren weder $this->_redirect() noch $this->_helper->getHelper('Redirector')->gotoUrlAndExit() ????

    Warum wollen mir diese absolut unverständlicherweise auf

    /~user/application/~user/application/controller/action

    weiterleiten??

    Wie mach ich das? Gibts eine andere Redirectmöglichkeit ausser den beiden die funktioniert?

    Oder soll ich mir eine komplette Url aus REQUEST_URI zusammenstoppeln? Wenn ja, wie?

    Sowas wird ja jeder brauchen - wie löst ihr das?

    Kann es sein dass das ein Bug im Zend Framework ist?

    mfg,
    divB

  10. #10
    Erfahrener Benutzer
    Registriert seit
    14.12.2006
    Beiträge
    107
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Also ich hab hier glaub eine passende Lösung für dein Problem.

    Ich speicher den letzten URL in der Session.
    Use Case:
    Der User klickt irgendwo auf Login (oben im Header) dann loggt er sich ein und wird auf dieses Irgendwo wieder redirectet und nicht auf die Startseite oder so.

    PHP-Code:
            /**
             * @todo Vielleicht einfach Module, Controller, Action & GET-, POST-
             * Parameter usw. in die Session speichern?
             * Mit einem Hop?
             *
             * Holt die URL des letzten Requests, damit Actions wie z.B. /login auf
             * die letzte URL umleiten können und aktualisiert diese in der Session
             * auf die aktuelle URL für den nächsten Request.
             */
            
    $session = new Zend_Session_Namespace();
            
    $preLastRequestUrl    '/';
            
    $lastRequestUrl        '/';
            
    $currentRequestUrl    $request->getRequestUri();

            if (isset(
    $session->preLastRequestUrl)) {
                
    $preLastRequestUrl $session->preLastRequestUrl;
            }

            if (isset(
    $session->lastRequestUrl)) {
                
    $lastRequestUrl $session->lastRequestUrl;
            }

            if (
    $lastRequestUrl == $currentRequestUrl) {
                
    $lastRequestUrl $preLastRequestUrl;
            }

            
    $session->preLastRequestUrl    $lastRequestUrl;
            
    $session->lastRequestUrl    $currentRequestUrl;

            
    Zend_Registry::set('lastRequestUrl'$lastRequestUrl); 

  11. #11
    Erfahrener Benutzer
    Registriert seit
    10.01.2007
    Beiträge
    343
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    var_dump($_SERVER);
    da findest evtl. sogar den host

    ach ja ... referrer liefert doch ne komplette _redirect-fähige url??????????????????!!!!!!!!!!!!!!!!!!!
    Geändert von ShoX (26.07.2007 um 23:04 Uhr)
    oO

  12. #12
    Erfahrener Benutzer
    Registriert seit
    28.12.2006
    Beiträge
    9.966
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Zitat Zitat von ShoX Beitrag anzeigen
    var_dump($_SERVER);
    da findest evtl. sogar den host

    ach ja ... referrer liefert doch ne komplette _redirect-fähige url??????????????????!!!!!!!!!!!!!!!!!!!
    Aber vertraut denn noch HTTP-Referer?

  13. #13
    Erfahrener Benutzer
    Registriert seit
    16.07.2007
    Beiträge
    186
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Zitat Zitat von wschott Beitrag anzeigen
    Also ich hab hier glaub eine passende Lösung für dein Problem.

    Ich speicher den letzten URL in der Session.
    Danke, aber das wär ja auch meine Idee bzw. würd ich so machen. Aber mit getRequestUri() bekomme ich nun mal eine Url relativ zum Server (/foo/bar). Und Kein redirect funktioniert damit - s.o.

    Zitat Zitat von ShoX Beitrag anzeigen
    var_dump($_SERVER);
    da findest evtl. sogar den host
    Ja, der Server finde ich ohne Probleme. Aber nur wegen einem ZF Bug die URL manuell auf den $_SERVER-Headern zammenstoppeln...pfui!!

    Zitat Zitat von KingCrunch Beitrag anzeigen
    Aber vertraut denn noch HTTP-Referer?
    Bis jetzt verwende ich ihn ja. Aber ich finds nicht elegant wie gesagt und würd auch lieber die Request_Uri verwenden.

  14. #14
    Erfahrener Benutzer
    Registriert seit
    14.12.2006
    Beiträge
    107
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Zitat Zitat von divB Beitrag anzeigen
    Danke, aber das wär ja auch meine Idee bzw. würd ich so machen. Aber mit getRequestUri() bekomme ich nun mal eine Url relativ zum Server (/foo/bar). Und Kein redirect funktioniert damit - s.o.
    Vielleicht hilft ja noch ein $request->getBaseUrl() davor zu setzen?

  15. #15
    Erfahrener Benutzer
    Registriert seit
    10.01.2007
    Beiträge
    343
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    wer vertraut den request-headern? ICH!

    und wenn der "user" darin rumpfuscht ist das nicht mein problem .. der redirect istn n feature .. kein zwanghaft benötigtes instrument ...

    mfg
    oO

  16. #16
    Erfahrener Benutzer
    Registriert seit
    28.12.2006
    Beiträge
    9.966
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Du verteidigst es ja, als hättest du es erfunden

  17. #17
    Erfahrener Benutzer
    Registriert seit
    10.01.2007
    Beiträge
    343
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    ja is doch wahr .. ihr wollt da overhead produzieren. als wärs so wichtig wie ein passwort zum admin-bereich ... 4-fach gesichert, am besten noch mit IP und User-client check ...

    mfg
    oO

  18. #18
    Erfahrener Benutzer
    Registriert seit
    28.12.2006
    Beiträge
    9.966
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    ja is doch wahr .. ihr wollt da overhead produzieren.
    Ja, und? Programmiers in Assembler Auf eine Overhead-Diskussion lass ich mich nich ein, das hatte ich scho zu oft, aber es gibt halt immer Leute, die glauben 20 Prozessortakte zu sparen wäre voll der Boost

  19. #19
    Erfahrener Benutzer
    Registriert seit
    16.07.2007
    Beiträge
    186
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Um wieder zum Thema zurückzukommen: Ich habe den Bug/Fehler gefunden.

    Er befindet sich in der Funktion Zend_Controller_Action_Helper::__prependBase():

    PHP-Code:
              $request $this->getRequest();
                if (
    $request instanceof Zend_Controller_Request_Http) {
                    
    $base rtrim($request->getBaseUrl(), '/');
                    if (!empty(
    $base) && ('/' != $base)) {
                        
    $url $base '/' ltrim($url'/');
                    }
                } 
    Glücklicherweise kann man diesen Unfug ohne Änderung des Frameworks abschalten und zwar einfach mit:

    PHP-Code:
    $this->_helper->getHelper('Redirector')->setPrependBase(false); 
    mfg,
    divB

  20. #20
    Erfahrener Benutzer
    Registriert seit
    12.04.2007
    Beiträge
    1.045
    Thanks
    0
    Thanked 3 Times in 2 Posts

    Standard

    HTTP_REFERER ist in meinen Augen keine tragfähige Lösung. Es gibt Proxies und auch weit verbreitete PersonalFirewalls, die den Inhalt von HTTP_REFERER leeren. Und womit? Mit Recht.

    Hintergrund: Wenn ich in meinem Browser von www.zfforum.de rüber zu www.google.de schwenke, hat das Google nichts anzugehen, auf welcher Webseite ich mich vorher befunden habe. Daher wird der HTTP_REFERER geleert (""), so dass der besuchte Webserver nie einen Inhalt im HTTP_REFERER finden wird, den er auswerten könnte.

    Ein bekanntes Beispiel für eine PersonalFirewall, die dieses macht ist Norton Security. Ich persönlich setze dieses Produkt nicht mehr ein, aber Millionen andere Anwender tun dies. Das Überschreiben des HTTP_REFERER mit einem Leerstring kann von Benutzern, die dieses Produkt (oder andere Proxies mit solch einer Funktion) einsetzen, nicht abgeschaltet werden. Wer daher auf den HTTP_REFERER setzt, schließt all diese Benutzer aus seiner Anwendung aus.

    Remi

Seite 1 von 2 1 2 LetzteLetzte

Ähnliche Themen

  1. Irgendwas was "hasPriv()"?
    Von KingCrunch im Forum Auth
    Antworten: 4
    Letzter Beitrag: 24.07.2007, 19:49
  2. [MVC] Unklarheiten zum "Model"-Komponent
    Von Floriam im Forum Einsteigerfragen
    Antworten: 19
    Letzter Beitrag: 16.07.2007, 16:34
  3. Kleineres "Gemeinschafts" Projekt
    Von seratio im Forum Installation & Konfiguration
    Antworten: 85
    Letzter Beitrag: 18.06.2007, 13:12
  4. Exception "script 'index/index.phtml' not found"
    Von citystrolch im Forum Einsteigerfragen
    Antworten: 1
    Letzter Beitrag: 31.05.2007, 19:16
  5. welche php "distribution" verwendet ihr?
    Von case im Forum PHP X-Talk
    Antworten: 7
    Letzter Beitrag: 07.05.2007, 19:39

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •