php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.06.2006, 20:04  
Benutzer
 
Registriert seit: 02.06.2006
Beiträge: 53
TailerD
Standard Session Logout Login Navigation

Hi,

ich werd noch wahnsinnig hier bei meinem Problem. Ich dreh mich seit ich weis nicht mehr wie lange und wieviel Tage im Kreis.

Ich hab einen Login gebastelt mit Anbindung an die Datenbank. Der User kann sich bei mir einloggen und in der Datenbank steht dann online.

Nun dachte ich pack ich die Daten dieses User die aus der DB geholt werden in das Session Array um damit weiterzuarbeiten.
also zb.
SESSION["kd_vorname"];
SESSION["kd_name"];
das klappt auch wird ausgelesen und name aus der Session wird sofort nach erfolgreichem Login angezeigt.

Die Fkt Navigationsleiste soll sich nun dementsprechend auch ändern in LOGOUT und LOGIN soll weg sein.

Das Problem ist nur das die Session Variablen zwar ja da sind, ich aber erst beim Aktualisieren Klick im Browser wirklich mit Ihnen arbeiten kann.

Irgendwie hab ich dann geschafft das Logout Angezeigt wird, nur dann kann ich andere Links nicht anklicken, weil dann wieder Login anstatt Logout da steht , also eben nur wenn ich 'vor' dem Link Klick Aktualisieren klicke klappt das und Logout steht immer da bis ich Logout geklickt hab.

Könnte mir vielleicht jemand einen guten Tip geben oder mittels einer Funktion auf die Sprünge helfen in der der Session Status Logout in Login und umgekehrt passend zur Session geht also während der gesamten Sitzung? Ihr könnt mir glauben ich hab hier schon mit Tränen gesessen, aber es geht einfach nicht. Ich hoffe ihr könnt da helfen.

Im Vorraus auf jeden Fall schon mal vielen Dank
TailerD ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 14.06.2006, 20:09  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard Re: Session Logout Login Navigation

Zitat:
Zitat von TailerD
Das Problem ist nur das die Session Variablen zwar ja da sind, ich aber erst beim Aktualisieren Klick im Browser wirklich mit Ihnen arbeiten kann.
Nein, mit den Sessionvariablen kannst du direkt nach der Initialisierung arbeiten.
xabbuh ist offline  
Alt 15.06.2006, 00:02  
Benutzer
 
Registriert seit: 02.06.2006
Beiträge: 53
TailerD
Standard

Gut, ich versteh nicht warum ich dann nach nach dem AKtualisieren im Browser...
Dann muss ich doch alle in Session Vars mit in $_Request Vars Speichern,nich?
Ich dachte nur das $_Session ja ein globales Array ist. Dann werden die also vor $_POst mitgeschleppt? Ich versuch das dann mal so.

Wie könnte ich das jetzt am besten machen das die Anzeige Logout solange da ist bis der User Logout klickt, alos auch wenn ein anderer Link ist? Soll ich eine Extra Spalte anlegen für die Session ID?
Ich hatte vorher ein array genommen und das immer auf true und false gesetzt je nach dem ob Session['online'] oder nicht.
TailerD ist offline  
Alt 15.06.2006, 20:06  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Zitat:
Zitat von TailerD
Gut, ich versteh nicht warum ich dann nach nach dem AKtualisieren im Browser...
Wie bitte?

Zitat:
Zitat von TailerD
Dann muss ich doch alle in Session Vars mit in $_Request Vars Speichern,nich?
Nein, damit du genau das nicht tun musst, verwendet man ja Sessions.

Zitat:
Zitat von TailerD
Ich dachte nur das $_Session ja ein globales Array ist. Dann werden die also vor $_POst mitgeschleppt? Ich versuch das dann mal so.
Wie meinst du das?

Zitat:
Zitat von TailerD
Wie könnte ich das jetzt am besten machen das die Anzeige Logout solange da ist bis der User Logout klickt, alos auch wenn ein anderer Link ist? Soll ich eine Extra Spalte anlegen für die Session ID?
Ich hatte vorher ein array genommen und das immer auf true und false gesetzt je nach dem ob Session['online'] oder nicht.
Warum prüfst du nicht einfach, ob $_SESSION['online'] gesetzt ist und passt die Ausgabe entsprechend an?
xabbuh ist offline  
Alt 16.06.2006, 05:05  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Zitat:
Dann muss ich doch alle in Session Vars mit in $_Request Vars Speichern,nich?
Hokuspokus? Wie wilsltn das der Session klar machen Die Sessions landen darin auf jeden Fall nicht, da kannste deinen Zauberstab schwingen, wie du willst

Zitat:
Ich dachte nur das $_Session ja ein globales Array ist. Dann werden die also vor $_POst mitgeschleppt? Ich versuch das dann mal so.
Höh? Also "vor" ist relativ, zumindest sind beide vollkommen unabhängig voneinander und somit ist es egal wer zuerst kommt. Die einen Daten (übrigens: $_SESSION, nicht $_Session) kommen aus der Sesssion, die andern aus der POST-Methode des Browser...

Zitat:
Wie könnte ich das jetzt am besten machen das die Anzeige Logout solange da ist bis der User Logout klickt, alos auch wenn ein anderer Link ist? Soll ich eine Extra Spalte anlegen für die Session ID?
Spalte? Wo issn ne Spalte?!? Du kannst dies durchaus mit Session lösen, bloss solltest du daran denken es früh genug abzufangen

Zitat:
Ich hatte vorher ein array genommen und das immer auf true und false gesetzt je nach dem ob Session['online'] oder nicht.
*Klugscheißer*
TRUE oder FALSE ist aber Boolean und´Array
*Ende Klugscheißer*

Mal nen bisschen Blabla über das System:

Daten, die über die URL mitgeschleppt werden, werden per $_GET abgefangen
Daten, die aus Formularen über post versendet werden, werden über $_POST abgefangen
Daten, die serverseitig gespeichert werden, werden über $_SESSION abgefangen und geschrieben, allerdings nur so lange, wie die Session besteht
Daten, die clientseitig gespeichert werdebn, werden über $_COOKIE abgefangen. Das schreib ist etwas komplizierter und es gilt auch nur solange der Cookie gültig ist
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 16.06.2006, 08:48  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Ich könnte mir vorstellen dass bei dir ERST gecheckt wird ob der User eingeloggt ist und dann jeweils Login/Logout angezeigt wird und DANNACH (!!!) die Session bei einem Login erstellt wird !! Dadurch wird erst nach neuem aktualisieren die Session vom ANFANG an existieren.
Flor1an ist offline  
Alt 17.06.2006, 19:30  
Benutzer
 
Registriert seit: 02.06.2006
Beiträge: 53
TailerD
Standard

Fast Genau erfasst !!!

Also bei mir ist das so. Mit aufrufen der Seite wird die Session gestartet.
Irgendwann will der User sich einloggen, hat sich an einem anderen Tag davor schon mal registriert. Trägt also Name und Passwort ein. Schickt ab.

// Anfangfunction Login
Prüfung(en): Ist er das? ja!
- erster Schritt In der Datenbank wird Status online gesetzt;
- zweiter Schritt die Daten des User werden nach dem auswählen
(mittels Schleife und if abfrage) in der Session gespeichert.

zb. $_SESSION[name] = $testuser ;
Die Ausgabe lautet Hallo $testuser.

Das geht also. Deswegen dachte ich die Daten sind in der Session ja jetzt eigendlich vorhanden.
Sind sie auch ABER !! Lass ich mir diese im folgenden in einer anderen Function ausgeben sind sie nicht mehr da.

Erst nach dem Aktualisieren des Browsers, folgt eine Meldung
Postdaten werden erneut gesendet und wenn ich ok klicke sind die Session
daten da so wie ich sie vorher wie schon erwähnt auch gespeichert hatte
in der Funktion Login. Und das versteh ich nicht, wenn man Session Variblen gleich nach dem initialisieren nutzen darf warum sind die dann nicht da?
// Ende fktLogin


// Anfang function Navigationleiste
Diese ist fester Bestandteil und wird bei jeder Aktion auf der Webseite neu aufgerufen.
Mit dieser fkt wollte ich nun das anstatt Login Logout erscheint, aber auch
zusätzlich auch andere Links in diesem 'sichtbar' eingeloggten Modus
anklickt werden können.

Nach erneuter Abfrage, prüfe ich dann
PHP-Code:
if($kd_status=='online' || $_SESSION["name"] && $_GET['mo']!="out" ){ 
                        
$get_vars['log']="true"// soll ermöglichen das weiterhin Links geklickt werden können, ohne das wieder Login erscheint                        
                                       
$nav.='[url=""]Logout[/url]';
                          }    else {
                          
                              
$get_vars['log']="false";
                            
$nav.='[url=""]Login[/url] ';
                        
                        } 
// Ende fktNavigationleiste

Ja und ich krieg das halt nicht hin das die SessionDaten auch in der function Navigationleiste da sind, so wie sie vorher
initialisiert hab
. Ohne im Browser aktualiesieren klicken zu müssen.
Was ja wenig sinn macht und irgendwie mich noch zum Verweifeln bringt.

Also wie rum sollte ich den Zauberstab denn nun schwingen ? Oder wie könnte ich das umsetzen, wenn ich diese zwei Funktionen zur Verfügung hab?
TailerD ist offline  
Alt 17.06.2006, 23:15  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von TailerD
Also bei mir ist das so. Mit aufrufen der Seite wird die Session gestartet.
OK.
Zitat:
Irgendwann will der User sich einloggen, hat sich an einem anderen Tag davor schon mal registriert. Trägt also Name und Passwort ein. Schickt ab.
Etwas falsch.
1.
Code:
session_start();
2. gucken, ob der User schon authentifiziert ist. ZB so:
Code:
if (isset($_SESSION['login']) AND $_SESSION['login'] === true)
  $login = true
else
  $login = false;
3. gucken, welches Menü man dem User in Abhängigkeit von $login präsentieren darf:
Code:
if ($login === true)
  require('./geheimes_menu.php');
else
  require('./oeffentliches_menu.php');
4. reagieren auf die jeweilige Useraktion:
Code:
define('OK', true');

if (! isset($_REQUEST['mode']))
  $_REQUEST['mode'] = 'start';

$_REQUEST['mode'] = basename(strip_tags($_REQUEST['mode']));

switch($_REQUEST['mode'])
{
  case 'start':
  case 'login':
  case 'sonstwas':
    require_once($_REQUEST['mode'] . '.php');
    break;

default:
  require('./kennen_wir_nicht.php');
}
# usw.
In jedem eingefügten File wird getestet. on die Konstante OK auf true gesetzt ist:
Code:
if (! defined('OK') OR OK !== true)
{
  header ('Location: http://' . $_SERVER['SERVER_NAME']);
  exit;
}
usw.
 
Alt 23.06.2006, 17:03  
Benutzer
 
Registriert seit: 02.06.2006
Beiträge: 53
TailerD
Standard

Sorry vielen Dank für die Hilfe aber ich versteh irgendwie nicht.

Ich arbeite mit den genannten Funktionen innerhalb eines Workflows nicht mit einzelnen Dateien.

Wo genau wird $_SESSION['login'] == true gesetzt.
Was machst du mit $_REQUEST['mode']. Wofür setzt du die Konstante define('OK', true'); oder besser in wie fern finde ich die wieder? Bitte kommentier das doch noch. Das wäre sehr nett. Danke für deine Zeit.
TailerD ist offline  
Alt 23.06.2006, 18:31  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von TailerD
Wo genau wird $_SESSION['login'] == true gesetzt.
Das ist ein Vergleich, keine Zuweisung.

Beim Login mußt Du, wenn sich der User korrekt vorgestellt hat, das ausführen:
$_SESSION['login'] = true;
Und beim Logout das:
$_SESSION['login'] = false;
oder das
$_SESSION = array();

Zitat:
Was machst du mit $_REQUEST['mode'].
Sowas verwende ich, um die für den jeweiligen Userrequest zusätzlich benötigten Scripte per require zu laden.

Zitat:
Wofür setzt du die Konstante define('OK', true');
Die wird im index.php gesetzt und in dem per require dazugeladenen Script ausgewertet. Das dient der Sicherheit, damit kein User diese Files per http requesten kann, ohne das im index.php der Loginstatus geprüft wird.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Login session aufzeichnen Black-Devil PHP Tipps 2008 7 03.03.2008 18:12
Login per Session oder htaccess? FI-DD PHP Tipps 2008 9 31.01.2008 21:19
Login, Session und der ganze Rest nikosch PHP Tipps 2007 10 25.03.2007 05:48
Session logout bei Frames Diet PHP Tipps 2006 31 28.07.2006 18:30
[Erledigt] PEAR AUTH_HTTP . login ist klar ? aber wie geht logout ? PHP-Fortgeschrittene 2 24.11.2005 09:37
login + session PHP Tipps 2005-2 23 30.08.2005 21:29
Session Login LA-Finest PHP Tipps 2005-2 4 05.07.2005 10:46
Session - logout nixdorf PHP Tipps 2005 10 13.02.2005 19:13
login mit session id PHP Tipps 2005 10 26.01.2005 12:32
session start nur bei jedem 2. login PHP Tipps 2004-2 9 16.12.2004 13:39
Session Problem beim Login PHP Tipps 2004-2 6 15.12.2004 09:37
login mit session geht ne PHP Tipps 2004-2 4 08.12.2004 15:48
Login / Session / Benutzerdaten SvenLittkowski PHP Tipps 2004 4 06.09.2004 17:08
Session Login funkt nicht, wenn Cookies immer aus sind schifti PHP-Fortgeschrittene 18 06.09.2004 07:48
[Erledigt] htaccess Login / Logout PHP Tipps 2004 3 13.08.2004 15:11

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php login logout, session logout, login logout php, http://www.php.de/php-tipps-2006/40707-session-logout-login-navigation.html, php login und logout, session login logout, bei login navigation anzeigen php, login logout session, login php logout, logout session, php authentifizierung logout, sessionlogout, login und logout php, navigationsleiste mit login, php logout zurück funktion browser, sessions logout, login logout mit php, logout in login session, ausloggen seesion auflösen, php $_session menü anzeigen logout

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:03 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.