• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Session überprüfung

Assassins

Neues Mitglied
Hallo ich plane gerade eine Communty und habe da eine Frage.
Jeder User bei mir hat ein Profil, was auch bei angemeldet Usern korrekt angezeigt wird.
Jetzt würde ich aber auch gerne das Profil für nicht angemeldet Usern anzeigen, dazu muss ich aber auch ein paar sachen ändern wie bsp. das Menü. Deshalb frage ich euch, wie ich das ermögliche, dass das System erkennt ob der User eingelogt ist oder nicht, falls nicht, soll er ein anderes Profil-Seite benutzen.

Ich Arbeite mit Sessions.
Habe zuerst gedacht, dass ich das dann auch mit SESSIONS händeln könnte, aber das geht nicht:
PHP:
$session = $_SESSION["user_id"];
if ($sessionid == "$session")
{
//HEADER TEIL
}
if ($sessionid == "")
{
//ANDERE HEADER
}
 
Werbung:
Sessions haben damit sicherlich auch zu tun. Primär geht es aber eben um die Unterscheidung innerhalb deiner Templates. Deine Idee mit den Sessions ist sicherlich schon der richtige Weg, hängt aber eben auch vom Rest der Seite ab.

Bei deinem Beispiel sehe ich momentan nur ein Problem:

PHP:
if ($sessionid == "$session")

Wenn man Vergleiche macht muss man auch wissen was man vergleicht. Wenn Du Zahlen vergleichst, musst Du auf Anführungszeichen verzichten. Also:

PHP:
if ($sessionid == $session)

Wenn Du Strings vergleichst ist dagegen eine String-Vergleichs-Funktion passender:

PHP:
if ( strcmp($sessionid, $session) == 0)
 
Ich sehe noch das Problem, weshalb die Session-ID die User-ID sein sollte.

Ein Beispiel, wie man es machen könnte:

- Nutzer loggt sich ein
- $_SESSION['user_id'] wird auf User-ID aus Datenbank gesetzt.

Code nach session_start():

PHP:
if (!isset($_SESSION['user_id'])) { $_SESSION['user_id'] = null; }

Der Wert ist nun entweder ein Integer größer 0 oder null.

In den Templates dann zum Beispiel:

PHP:
if ($_SESSION['user_id'] !== null) {
    /* eingeloggt */
} else {
    /* nicht eingeloggt */
}
 
Werbung:
Ok schonmal danke.
@mermshaus
Also wenn ich dich richtig verstanden habe, sollte so mein Login.php aussehen:
PHP:
session_start ();
if (!isset($_SESSION['user_id'])) { $_SESSION['user_id'] = null; }  
// Datenbankverbindung aufbauen 
..
// Benutzerdaten in ein Array auslesen
..
// Sessionvariablen erstellen und registrieren
richtig?

Und mein header passe ich dann mit
PHP:
if ($_SESSION['user_id'] !== null) { 
    /* eingeloggt */ 
} else { 
    /* nicht eingeloggt */ 
}
an. Das Profil muss ich dann ja auch so anpassen.
 
Ich kann es im Detail nicht genau beurteilen, aber ich glaube, im Großen und Ganzen passt das.

PHP:
session_start ();
if (!isset($_SESSION['user_id'])) { $_SESSION['user_id'] = null; }

Das hier ist sozusagen „globaler“ Initialisierungscode. Die Session wird gestartet und es wird sichergestellt, dass das Feld user_id einen definierten Wert besitzt. Das sollte bei jedem Seitenaufruf ausgeführt werden, damit du im weiteren Scriptverlauf davon ausgehen kannst, dass das Feld gesetzt ist.

Beim Login würdest du irgendwo nach dieser Zeile $_SESSION['user_id'] mit der jeweiligen User-ID überschreiben. Beim nächsten Aufruf einer Seite würde das Feld dann eben statt null die entsprechende ID enthalten.

PHP:
if ($_SESSION['user_id'] !== null) { 
    /* eingeloggt */ 
} else { 
    /* nicht eingeloggt */ 
}

Mit so einer Abfrage könntest du dann prüfen, ob der aktuelle Besucher eingeloggt ist oder nicht, ja.
 
ok vielen dank.
Ich kann ja
PHP:
if (!isset($_SESSION['user_id'])) { $_SESSION['user_id'] = null; }
mit in die Checkuser schreiben, die bei jeder Seite existiert.

Ok, ich werde es dann gleich mal versuchen, und sollte Ich Probleme habe, melde ich mich nochmal. Aber schonmal vielen Dank
 
Werbung:
Zurück
Oben