Probleme mit Sessions !
-
Hi,
Also, ich glaub ich hol jetzt gleich den Strick und mach meinem Leben ein Ende!
Entweder mangelt es mir an Gerhirnzellen oder was weiß ich
Also ich Hab ein Login-Script. Ich prüfe an einer Stelle ob Password/Username richtig ist.
Falls alles richtig registier ich eine Variable "member_id" und speicher die Id, und alles klappt !Führ ich aber eine funktion aus, welche den gleichen code enthält, wird zwar die Variable gespeichert, jedoch nicht der Wert "1" gespeichert !!!!!
Bitte erklährt mir WARUM ??
CODES:
Ohne Funktion:
// prüfe ob ein nickname und password angegeben wurde if( strlen( $_POST['login_name'] ) > 0 && strlen( $_POST['login_password'] ) > 0 && !$g_bLogged ) { $bAdmin = false; // wurde ein admin-logingesetzt ? if( Isset( $_POST['login_check_admin'] ) ) $bAdmin = true; # überprüfe user-daten //$iLoginResult = $g_cLogin->TryLogin( $_POST['login_name'], $_POST['login_password'], $bAdmin ); $member_id = 1; if( !CSession::IsRegisteredVar( "member_id" ) ) CSession::RegisterVar( "member_id" ); else $_SESSION['member_id'] = $member_id; ....
Mit Funktion:
function test() { $member_id = 1; if( !CSession::IsRegisteredVar( "member_id" ) ) CSession::RegisterVar( "member_id" ); else $_SESSION['member_id'] = $member_id; } // prüfe ob ein nickname und password angegeben wurde if( strlen( $_POST['login_name'] ) > 0 && strlen( $_POST['login_password'] ) > 0 && !$g_bLogged ) { $bAdmin = false; // wurde ein admin-logingesetzt ? if( Isset( $_POST['login_check_admin'] ) ) $bAdmin = true; # überprüfe user-daten //$iLoginResult = $g_cLogin->TryLogin( $_POST['login_name'], $_POST['login_password'], $bAdmin ); test(); ....
Naja ich hoffe mir kann da vielleicht jemand weiterhelfen!
Cu
-
Geht er in den if oder in den else Zweig? Was machst du in CSession::RegisterVar?
-
ich führe einfach die funktionen aus:
<?PHP # ================================== Copyright © 2004 Cenetix-Dev, All rights reserved. ========================= # # # Purpose: # ================================================================================================================ # -[ defines ]- # -[ class ] - class CSession { # -[ variables ]- # -[ functions ]- //------------------------------------------------------------------------------- // Purpose: constructor // Output : //------------------------------------------------------------------------------- function CSession () { } //------------------------------------------------------------------------------- // Purpose: // Output : //------------------------------------------------------------------------------- function Start() { return session_start(); } //------------------------------------------------------------------------------- // Purpose: // Output : //------------------------------------------------------------------------------- function GetId() { return session_id(); } //------------------------------------------------------------------------------- // Purpose: // Output : //------------------------------------------------------------------------------- function Destroy() { session_unset(); // destroy session session_destroy(); } //------------------------------------------------------------------------------- // Purpose: // Output : //------------------------------------------------------------------------------- function RegisterVar( $var_name ) { return session_register( $var_name ); } //------------------------------------------------------------------------------- // Purpose: // Output : //------------------------------------------------------------------------------- function UnregisterVar( $var_name ) { return session_unregister( $var_name ); } //------------------------------------------------------------------------------- // Purpose: // Output : //------------------------------------------------------------------------------- function IsRegisteredVar( $var_name ) { return session_is_registered( $var_name ); } //------------------------------------------------------------------------------- // Purpose: // Output : //------------------------------------------------------------------------------- function GetCookieParams() { return session_get_cookie_params(); } }; ?>
-
Hi,
was bringt mir das, wenn ich ein "@" for eine session funktion setzte ?
Bye
-
Mit "@" kannst du die Ausgabe einer Fehlermeldung der Funktion unterbinden.
Das ist nützlich, wenn du eine eigene oder gar keine Meldung ausgeben willst.
-
Man sollte nicht session_register und $_SESSION in Kombination verwenden - steht zumindest so in der PHP-Doku
-
Aha, und wie soll ich deiner Meinung das ganze sonst machen ?
Also ich hab den Code ein bisschen geändert und funktioniert jetzt,
aber ich hab die kombination ! ?// register data in session if( !CSession::IsRegisteredVar( "member_id" ) ) CSession::RegisterVar( "member_id" ); if( !CSession::IsRegisteredVar( "is_admin" ) ) CSession::RegisterVar( "is_admin" ); $_SESSION['member_id'] = $member_id; $_SESSION['is_admin'] = $is_admin;
-
einfach die if's ganz weglassen
Wobei ich eher nicht denke, dass das etwas mit dem eigentlichen Problem zu tun hat
-
flenders schrieb:
einfach die if's ganz weglassen
Wobei ich eher nicht denke, dass das etwas mit dem eigentlichen Problem zu tun hatWenn ich das tute kommt ein Fehler, dass die daten schon gesendet worden sind
-
Bei was kommt das dann
Mit if-Weglassen meinte ich natürlich das ganze, also das hier:
if( !CSession::IsRegisteredVar( "member_id" ) ) CSession::RegisterVar( "member_id" ); if( !CSession::IsRegisteredVar( "is_admin" ) ) CSession::RegisterVar( "is_admin" );
-
Wird das dann automatisch in den Sessions gespeichert ? !! ?
Wenn ich nur die Werte in $_SESSIONS speicher ?
-
Ja, und in der Doku steht auch:
Wenn Sie $_SESSION (oder $HTTP_SESSION_VARS) verwenden, sollten Sie nicht session_register(), session_is_registered() und session_unregister() verwenden.