| | | | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer Registriert seit: 16.02.2006
Beiträge: 303
![]() | Ich habe ein wenig mehr recherchiert und herausgefunden, dass es keinen Session Handler gibt. Die Möglichkeit danach zu suchen hat sich erst mit deinem Suchwort Session Handler ergeben. Das einzige was ich jetzt noch in Erfahrung bringen konnte ist, dass die Session global gestartet wird. Code: session_name( md5( $live_site ) ); session_start(); kann ich damit dann nichts übergeben, da in der anderen Funktion die Session nicht zur Verfügung steht. Auch Versuche mit Code: global $_SESSION; Ich kann doch nicht in jeder Funktion die Session starten oder ist das kein Problem? Irgendwie sehr merkwürdig, weitere Informationen zur Sessionverwaltung liefert auch die API des Frameworks nicht. Ja, nun steh ich da... |
| |
| | |
| Moderator und Wett-König | Hallo tinchen, wie bereits schon geschrieben wurde implementieren die meißten (guten) Frameworks einen Session-Handler, der irgendwo im Code aufgerufen und instanziiert werden kann, solange noch keine Ausgabe in PHP getätigt wurde. MVC-Frameworks bauen ohnehin erst den kompletten PHP-Code zusammen und geben diesen zum Schluss per echo aus. Ist das bei dir auch der Fall, so kannst du das genauso machen. Solltest du Anregungen für eine Implementierung suchen, sag mir Bescheid, dann kann ich mal ein Beispiel für Implementierung und Verwendung posten, da ich selbs soetwas einsetze. Hintergrund ist wie immer Abstraktion, sprich ich muss mich nicht mehr um das session_start() kümmern, sondern kann wo ich will im Code Sessions lesen und beschreiben.
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| | |
| Erfahrener Benutzer | $_SESSION ist sogar superglobal, ebenso wie die gesamte Session an sich: Entweder sie läuft, oder sie läuft nicht. ^^ Da sollte man immer dran kommen, wenn die Session läuft. Ich kann mir aber wirklich nicht vorstellen, dass das Framework keine eigene Session-Verwaltung besitzt. Ist das Framework öffentlich? Wenn ja, gibts nen Link? PS: Wenn die Session global gestartet wird, solltest du es vermeiden sie selbst noch mal zu starten.
__________________ Nicht jeder Fehler ist ein Bug. |
| |
| | |
| Erfahrener Benutzer Registriert seit: 16.02.2006
Beiträge: 303
![]() | Morgen, ich habe die ganze Nacht das Frameset durchgearbeitet und nun festgestellt, dass wohl möglich im Frontend gar keine Session gestartet wird. In der index.php befindet sich vor dem Setzen der header() die Funktion Code: $mainframe->initSession(); Code:
/**
* Initialises the user session
*
* Old sessions are flushed based on the configuration value for the cookie
* lifetime. If an existing session, then the last access time is updated.
* If a new session, a session id is generated and a record is created in
* the jos_sessions table.
*/
function initSession() {
// initailize session variables
$session =& $this->_session;
$session = new mosSession( $this->_db );
// purge expired sessions
$session->purge('core');
// Session Cookie `name`
$sessionCookieName = mosMainFrame::sessionCookieName();
// Get Session Cookie `value`
$sessioncookie = strval( mosGetParam( $_COOKIE, $sessionCookieName, null ) );
// Session ID / `value`
$sessionValueCheck = mosMainFrame::sessionCookieValue( $sessioncookie );
// Check if existing session exists in db corresponding to Session cookie `value`
// extra check added in 1.0.8 to test sessioncookie value is of correct length
if ( $sessioncookie && strlen($sessioncookie) == 32 && $sessioncookie != '-' && $session->load($sessionValueCheck) ) {
// update time in session table
$session->time = time();
$session->update();
} else {
// Remember Me Cookie `name`
$remCookieName = mosMainFrame::remCookieName_User();
// test if cookie found
$cookie_found = false;
if ( isset($_COOKIE[$sessionCookieName]) || isset($_COOKIE[$remCookieName]) || isset($_POST['force_session']) ) {
$cookie_found = true;
}
$session->jaclplus = jaclplusDefaultAL(); //'0';
// check if neither remembermecookie or sessioncookie found
if (!$cookie_found) {
// create sessioncookie and set it to a test value set to expire on session end
setcookie( $sessionCookieName, '-', false, '/' );
} else {
// otherwise, sessioncookie was found, but set to test val or the session expired, prepare for session registration and register the session
$url = strval( mosGetParam( $_SERVER, 'REQUEST_URI', null ) );
// stop sessions being created for requests to syndicated feeds
if ( strpos( $url, 'option=com_rss' ) === false && strpos( $url, 'feed=' ) === false ) {
$session->guest = 1;
$session->username = '';
$session->time = time();
$session->gid = 0;
// Generate Session Cookie `value`
$session->generateId();
if (!$session->insert()) {
die( $session->getError() );
}
// create Session Tracking Cookie set to expire on session end
setcookie( $sessionCookieName, $session->getCookie(), false, '/' );
}
}
// Cookie used by Remember me functionality
$remCookieValue = strval( mosGetParam( $_COOKIE, $remCookieName, null ) );
// test if cookie is correct length
if ( strlen($remCookieValue) > 64 ) {
// Separate Values from Remember Me Cookie
$remUser = substr( $remCookieValue, 0, 32 );
$remPass = substr( $remCookieValue, 32, 32 );
$remID = intval( substr( $remCookieValue, 64 ) );
// check if Remember me cookie exists. Login with usercookie info.
if ( strlen($remUser) == 32 && strlen($remPass) == 32 ) {
$this->login( $remUser, $remPass, 1, $remID );
}
}
}
}
DB und Cookie verwaltet. Im Administrationsbereich findet sich dann auch ein session_start im Frontend nicht. Nun bin ich hergegangen und habe in die index.php über der header() def geschrieben: Code: session_name( md5( $live_site ) ); session_start(); $_SESSION['session_userstate'] = array(); Allerdings bin ich mir überhaupt nicht sicher, ob das so eine gute Idee ist, dass zu machen, muss ich noch etwas beachten? Darf die Session genauso heißen wie im Backend oder gibt das Probleme? [Wahrscheinlich gar nicht so ohne Code Kenntnis zu beantworten] Rückfragen oder Anregungen? Immer her damit. Grüße Tine |
| |
| | |
| Moderator und Wett-König | Hallo Tinchen, welchen Code verwendest du hier? Ist das ein fertiges Framework? Grundsätzlich sollte man Session-Handling kapseln (wie bereits beschreiben) und das init-Zeug sollte selbständig dafür sorgen, dass eine Session angelegt wird. Sessions dürfen natürlich im FE und BE gleich heißen, lediglich der Inhalt sollte unterschiedlich sein, da höchstwahrscheinlich unterschiedliche Inhalte benötigt werden.
__________________ Viele Grüße, Dr.E. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Think about software design before you start to write code! 2. Discuss and review it together with experts! 3. Choose good tools (-> Adventure PHP Framework (APF))! 4. Write clean and reusable software only! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| | ||
| Erfahrener Benutzer Registriert seit: 16.02.2006
Beiträge: 303
![]() | Zitat:
paar jährlichen alt. Es wird gerade ein neues Framework erstellt, dass befindet sich allerdings im Beta Stadium. Nun ich habe mir das alles sehr genau angesehen und möchte mal sagen, dass im Frontend gar keine Session gestartet wird. Die Daten werden in einem Cookie und in der DB in der Tabelle sessions geschrieben. Mehr passiert da nicht. Alle Versuche mit var_dump($_SESSION) schlagen im Frontend auch fehl. Lediglich ein Hinweis, dass die Variable nicht bekannt ist und NULL. Also keine Session im Frontend, denn die müsste ja superglobal zur Verfügung stehen, da ist aber nichts. Mein Problem ist nun, ob ich das mit der Session einfach so machen kann. Ich denke die Entwickler werden sich etwas dabei gedacht haben und ich bin mir derzeit nicht wirklich sicher, ob das Starten der Session im Frontend ggf. Sicherheitslücken etc. verursachen könnte. Wenn ich die Session selbst starte, steht auf jeden Fall die Session auch global zur Verfügung. Das mit dem Kapseln kann ich so noch nicht nachvollziehen, was soll das genau bedeuteten? Es gibt derzeit nur ein API für die Beta, so merkwürdig das klingt. Ich schau mich noch einmal um, ob ich da etwas finde. Die API für das CMS findet sich hier: http://api.joomla.org/ Allerdings ist das für die kommende beta und nicht für die aktuelle Version. Zudem ist der Code in den 1.0.x Versionen eher mittelmäßig, aber schau es dir an, dort kannst du auch das ganze Paket downloaden, allerdings weiß ich nicht, ob sich da eine Einarbeitung lohnt. Gruß Tine | |
| |
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Erledigt] Session Problem | karina_02 | PHP Tipps 2008 | 6 | 18.05.2008 22:37 |
| Problem bei session Lifetime | Cyberbob_at_tot | PHP Tipps 2007 | 5 | 05.06.2007 17:47 |
| session nach seitenwechsel leer... | GELight | PHP Tipps 2006 | 8 | 17.09.2006 15:17 |
| Session Logout Login Navigation | TailerD | PHP Tipps 2006 | 10 | 24.06.2006 17:12 |
| session array | Timo Trallala | PHP Tipps 2006 | 18 | 22.04.2006 13:45 |
| Frage zur Anwendung einer Session mehrfach... | GELight | PHP Tipps 2006 | 10 | 12.03.2006 16:47 |
| [Erledigt] php session problem :( | PHP Tipps 2005-2 | 5 | 21.10.2005 16:37 | |
| Session abschaltbar?? Probleme mit Objekten in Session! | becks123 | PHP-Fortgeschrittene | 3 | 19.09.2005 15:47 |
| Session wird nicht angelegt | PHP Tipps 2005-2 | 7 | 24.07.2005 13:35 | |
| Kreieren einer Session | PHP Tipps 2005 | 11 | 28.05.2005 15:16 | |
| Session error nach Umstellung auf PHP 5 | PHP Tipps 2005 | 15 | 13.05.2005 14:35 | |
| verliere Session | Sonja | PHP Tipps 2005 | 3 | 27.04.2005 09:32 |
| Session Problem | PHP-Fortgeschrittene | 3 | 18.02.2005 14:37 | |
| [Erledigt] Formulardaten in einer Session speichern, per Link übergeben | PHP Tipps 2004-2 | 2 | 29.12.2004 15:47 | |
| [Erledigt] Hilfe...PhpBB Session Problem!! | PHP Tipps 2004-2 | 2 | 15.12.2004 18:28 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| php login framework sessions, session login framework php, formulardaten an session vor bekannt geben, php \get session cookie\, / / setcookie ($ sessioncookiename, \'-\', false, \'/\');, if session, phpbb purge session |

Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.