Empfehlungen: Erweiterte Suche

Problem mit Sessions

Daten auslesen, verarbeiten und den Views übergeben

Problem mit Sessions

Beitragvon pat » Mi 24. Jun 2009, 09:27

Hallo zusammen,

Bin neu hier und arbeite erst seit kurzem mit cakephp. Ich habe ein Problem mit einer Session.
Auf den Seiten, bei den ich noch keinen Controller angelegt habe gibt Session->check true zurück.
Aber auf Seiten mit einem Controller gibt Session->check false zurück.
Die Funktion, die die session checkt, steht in einem anderen controller, dem logins_controller.
Muss ich in dem Controller, der Seite auf der ich mich befinde, die sessions definieren oder includen oder ähnliches??
Vielen Dank!
pat
 
Beiträge: 5
Registriert: Mi 24. Jun 2009, 08:43
OS: Windows

Re: Problem mit Sessions

Beitragvon havanna » Mi 24. Jun 2009, 21:46

Hallo Pat,
sorry, ich verstehe dich nicht ganz. "Seiten ohne Controller" - das gibt es in CakePHP eigentlich nicht. Selbst statische Seiten laufen über den Page Controller. Jeder Aufruf wird ja durch die .htaccess Datei erst einmal gegen den Controller gelenkt.
Session ist eine Komponente. Ich habe die Session-Komponente im app_controller.php eingebunden.
Code: Alles auswählen
  var $components = array('Session', 'RequestHandler');

Damit steht Sie dir eigentlich in jedem nachfolgenden Controller-Aufruf zur Verfügung.

Ciao Thomas
Benutzeravatar
havanna
 
Beiträge: 191
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN

Re: Problem mit Sessions

Beitragvon euromark » Mi 24. Jun 2009, 22:05

naja, es gibt einige ausnahmen

- views, die gecached sind und
- wenn eine url aufgerufen wird, die es nicht gibt
z.b. bei /controller/nonsenseAction bzw. /nonsenseController/action
wird ebenfalls kein controller aufgerufen^^
euromark
 
Beiträge: 618
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.1
OS: Windows

Re: Problem mit Sessions

Beitragvon havanna » Do 25. Jun 2009, 08:50

Hallo Mark,
- wenn eine url aufgerufen wird, die es nicht gibt
z.b. bei /controller/nonsenseAction bzw. /nonsenseController/action


Da bin ich anderer Meinung: Das Prinzip des MVC-Patterns ist es, dass jeder Aufruf an den zentralen Controller geleitet wird. Dies ist bei CakePHP die app_controller.php. Dass das so ist, verdeutlich ja das Problem von Jörg (Zugriff auf usage Verzeichnis).
Ich meine in der Funktion &__getController($params) der Klasse Dispatcher wir auf jeden Falle eine Instanz vom AppController gebildet.
Du siehst das auch, wenn du eine Url http://deinedomain.de/mist/irgendeinmist aufrufst und in der Methode before_render() echo "hallo welt" schreibst, wird dies ausgegeben.
Bei CakePHP ist es zwar so, dass der Aufruf zuerst an den Dispatcher geleitet wird, aber, um auch die Fehlermeldung überhaupt ausgegeben zu können, wird der zentrale Controller benötigt.
Bei Views, die gecached sind, hast du Recht.

Ciao Thomas
Benutzeravatar
havanna
 
Beiträge: 191
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN

Re: Problem mit Sessions

Beitragvon euromark » Do 25. Jun 2009, 09:52

ok, ich hab mich n bissl doof ausgedrückt
eine instanz wird zwar gebildet, allerdings wird "NUR" beforeRender() getrickert
(was mich schonmal zur verzweiflung gebracht hat früher^^)

beforeFilter(), afterFilter() etc werden nicht getriggert in den errors
bei gecacheten views werden soweit ich weiß gar keine before/after methoden getriggert - korrigier mich wenn ich falsch liege
euromark
 
Beiträge: 618
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.1
OS: Windows

Re: Problem mit Sessions

Beitragvon havanna » Do 25. Jun 2009, 10:07

Hallo Mark,
das sehe ich genauso. Was ich jetzt nicht sicher weiß - aber ich denke das müsste so sein, ob die "components" beim Bilden der Instanz eingebunden werden.
Wenn dem so ist, müsste er auf jeden Fall die Session zur Verfügung haben (auch bei fehlendem Controller / View), wenn er diese wie vorgeschlagen einbindet (mit Ausnahme bei gecachten Seiten).

@Pat: Empfehlung: du solltest sowieso bei der Entwicklung immer den Cache ausschalten. Ist so der typische Fehler der einem Anfangs passiert. Ggf. nochmal im Verzeichnis /app/tmp schauen, ob die Unterverzeichnisse leer sind.


Ciao Thomas
Benutzeravatar
havanna
 
Beiträge: 191
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN

Re: Problem mit Sessions

Beitragvon euromark » Do 25. Jun 2009, 10:34

ja, richtig
die session müsste wirklich immer funktionieren (abgesehen vom cache)
euromark
 
Beiträge: 618
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.1
OS: Windows

Re: Problem mit Sessions

Beitragvon pat » Do 25. Jun 2009, 14:22

Hi! Vielen Dank für die Antworten.

Mit Seiten ohne Controller mein ich Seiten bei dene ich noch keinen Controller angelegt habe und noch leer sind.
Ich habe den Cache gelöscht aber leider funktioniert es immer noch nicht :(
Die Components im app_controller einzubinden hat leider auch nicht funktioniert...
Vielleicht hab ich irgend ein anderen Fehler im code.

Ich habe einen logins_controller.php mit einer function login, die die Session startet:
$this->Session->write('benutzer.name', $this->data['Login']['benutzer']);

Auserdem enthält der logins_controller.php eine function check, die die Session checkt:
if($this->Session->check('benutzer.name') == true){
return 'Eingeloggt!';
} else {
return 'Sie müssen sich zuerst einloggen!';
}

Dann habe ich ein layout members.ctp in dem ich die function check vom logins_controller.php aufrufe:
<?php $check = $this->requestAction('/Logins/check'); ?>
<?php debug($check); ?>

Wenn ich, nachdem ich mich eingeloggt habe, die View members mit dem members_controller.php aufrufe, bekomme ich "Sie müssen sich zuerst einloggen!" zurück.

Wenn ich alle anderen Views in meinem menu, für die ich noch keinen controller angelegt habe, aufrufe bekomme ich "Eingeloggt!" zurück.

Vielen Dank für eure Mühe!!

Viele Grüße
pat
pat
 
Beiträge: 5
Registriert: Mi 24. Jun 2009, 08:43
OS: Windows

Re: Problem mit Sessions

Beitragvon havanna » Do 25. Jun 2009, 20:21

Hallo Pat,
sorry, z.T. sind deine Zeilen ziemlich verwirrend.
Hast du unter Tutorials & Snippets das Authake Plugin gesehen, das ich hochgeladen habe? Lade dir das mal runter und schaue es an. Das ist eine User-Verwaltung.
Das siehst du wie in app_controller.php die Session Component eingebunden wird und in der Funktion before_filter der Authake Component wie die Session ausgelesen wird. Und in der Funktion function login($user) siehst du wie die Session geschrieben wird.

Ciao Thomas
Benutzeravatar
havanna
 
Beiträge: 191
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN

Re: Problem mit Sessions

Beitragvon pat » Fr 26. Jun 2009, 07:07

Hallo Thomas,

das ist echt ne super Sache!!
Kannte bis jetzt nur die Befehle aber hatte kein richtiges Beispiel für Sessions und habs deswegen völlig falsch aufgebaut.
Ich denke das wird mir gut weiterhelfen.

Vielen Dank!
pat
 
Beiträge: 5
Registriert: Mi 24. Jun 2009, 08:43
OS: Windows

Nächste

Zurück zu Controller

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast