Zum Inhalt springen

Ich werde aus SESSIONS nicht schlau !!!


Empfohlene Beiträge

Hallo,

ich versuche seit wochen vergeblich eine funktionierende SESSION in meinem Projekt einzubinden. Irgendwie will es nicht klappen. Next step: VERZWEIFLUNG !

log.php:


<?php
function login_form ()
{
?>
<p>Anmeldung:</p>
<form action="log.php?login=1" method="post">
Login: <input type="text" name="login"><br>
Passwort: <input type="password" name="passwd"><br>
<input type="submit" value="Anmelden">
</form>
<?php
}
session_start();
if ($_GET['login'])
{
$user = "dpawlowski"; // Benutzername
$pass = "12345"; // Benutzerpasswort
if (($_POST['login'] == $user) && ($_POST['passwd'] == $pass))
{
$session_time = 15; // Dauer der Session (in Minuten)
$_SESSION['user'] = $_POST['login'];
$_SESSION['expire'] = time() + 60 * $session_time;
echo 'Autorisierung erfolgreich.<br>
<a href="log.php?logout=1">Abmelden</a><br>
Geschützte Seiten: <a href="data1.php">Daten 1</a>, <a href="data2.php">Daten 2</a>.';
}
else
{
echo 'Inkorrekte Angabe<br>';
login_form();
}
}
elseif ($_GET['logout'])
{
session_destroy();
echo 'Sie wurden abgemeldet';
}
else
{
login_form();
}
?>
[/PHP]

check_login.php:

[PHP]
<?php
session_start();
if (!$_SESSION)
{
echo 'Um auf diese Seite zuzugreifen, müssen Sie sich <a href="log.php">anmelden</a>.';
exit;
}
elseif ($_SESSION['expire'] <= time())
{
echo 'Ihre Session ist verfallen. Wiederholte <a href="log.php">Anmeldung</a> notwendig';
exit;
}

?>

data1.php:



<?php require "check_login.php"; ?>
<html>
<body>
<p><a href="log.php?logout=1">Abmelden</a></p>
<p>
Geheime Daten. Geheime Daten.
Geheime Daten. Geheime Daten.
Geheime Daten. Geheime Daten.
Geheime Daten. Geheime Daten.
</p>
</body>
</html>
[/PHP]

sobald ich data1.php aufrufe startet zum einen ein neuer session und zum anderen kommt die Fehlermeldung dass ich mich anmelden muss um auf diese Seite zuzugreifen.

Ausserdem erkennt der Skript $_GET['login'] und $_GET['logout'] nicht

und gibt als Error : Unknown index zurück.

Kennt jemand dieses Problem und kann mir freundlicherweise behilflich sein ?

Link zu diesem Kommentar
Auf anderen Seiten teilen


if (!$_SESSION)
{
echo 'Um auf diese Seite zuzugreifen, müssen Sie sich <a href="log.php">anmelden</a>.';
exit;
}
[/PHP]

Hast du es mal mit

[php]if(session_is_registered('user') {......}

versucht?

Wenn du nur $_SESSION abfragst ohne den Namen, weiss das Script doch garnicht welche Session gemeint ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ausserdem erkennt der Skript $_GET['login'] und $_GET['logout'] nicht

und gibt als Error : Unknown index zurück.


<?php
function login_form ()
{
?>
<p>Anmeldung:</p>
<form action="log.php?login=1" method="post">
Login: <input type="text" name="login"><br>
Passwort: <input type="password" name="passwd"><br>
<input type="submit" value="Anmelden">
</form>
<?php
}
session_start();
if (isset($_GET['login'])) // <--
{
$user = "dpawlowski"; // Benutzername
$pass = "12345"; // Benutzerpasswort
if (($_POST['login'] == $user) && ($_POST['passwd'] == $pass))
{
$session_time = 15; // Dauer der Session (in Minuten)
$_SESSION['user'] = $_POST['login'];
$_SESSION['expire'] = time() + 60 * $session_time;
echo 'Autorisierung erfolgreich.<br>
<a href="log.php?logout=1">Abmelden</a><br>
Geschützte Seiten: <a href="data1.php">Daten 1</a>, <a href="data2.php">Daten 2</a>.';
}
else
{
echo 'Inkorrekte Angabe<br>';
login_form();
}
}
elseif (isset( $_GET['logout'])) // <--
{
session_destroy();
echo 'Sie wurden abgemeldet';
}
else
{
login_form();
}
?>
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hast Du in allen Dateien session_start drin?

Frank

Wenn ich in allen dateien session_start() reinmache dann startet er auf jeder Seite eine andere Session . Normalerweise muss ja die funktion session_start() schon selbst überprüfen ob schon eine Session gestartet ist, im ja Fall macht er mit der angefangenen Session weiter (müsste er normalerweise, was aber offensichtlich nicht der Fall ist) und im nein Fall also wenn keine Session gestartet ist bzw. wenn keine Session besteht startet er halt eben eine neue Session.

Wie gesagt register_globals sind standartmäsig off, gibt es irgendwelche anderen einstellungen damit eine Session reibungslos funktioniert? :confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn ich in allen dateien session_start() reinmache dann startet er auf jeder Seite eine andere Session . Normalerweise muss ja die funktion session_start() schon selbst überprüfen ob schon eine Session gestartet ist, im ja Fall macht er mit der angefangenen Session weiter (müsste er normalerweise, was aber offensichtlich nicht der Fall ist) und im nein Fall also wenn keine Session gestartet ist bzw. wenn keine Session besteht startet er halt eben eine neue Session.

Wie gesagt register_globals sind standartmäsig off, gibt es irgendwelche anderen einstellungen damit eine Session reibungslos funktioniert? :confused:

wenn du folgende datei struktur hast:


// 1.php:

session_start();


// 2.php

session_start();

// index.php
session_start();
include( "1.php");
include( "2.php");
[/PHP]

hier wird in der index.php die session gestartet.

danach folgt der include der 1.php, in dem wiederum eine neue session gestartet wird.

danach folgt der include der 2.php, in dem wiederum eine neue session gestartet wird.

Fogle:

Man darf pro site aufruf nur 1 mal ein session_start() verwenden

gib ma den genauen wortlaut deines fehlers an, und sag wo genau die zeile ist in der der fehler passiert
Link zu diesem Kommentar
Auf anderen Seiten teilen

wenn du folgende datei struktur hast:


// 1.php:

session_start();


// 2.php

session_start();

// index.php
session_start();
include( "1.php");
include( "2.php");
[/PHP]

In den include dateien habe ich kein session_start() und jede datei hat wirklich nur eine session_start().

Genaue wortlaut kann ich dir momentan nicht sagen weil ich momentan kein zugang zum Server habe(firma)... Im grunde genommen gibt er auch session bezüglich keine fehlermeldung , ich sehe nur anhand der /tmp ordner wo die sessions abgelegt werden dass immer mehrere sessions auftreten und nicht nur eine wie es sein soll.

php.ini Einstellungen:

register_globals=off

session.auto_start=on

session.use_trans_sid=1

session.use_cookies=0

Muss ich eigentlich an jedem link die PHPSESSID anhängen(wie ?) und wenn ja muss dann auf der nächsten Seite wieder session_start() stehen ? :confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Muss ich eigentlich an jedem link die PHPSESSID anhängen(wie ?) und wenn ja muss dann auf der nächsten Seite wieder session_start() stehen ? :confused:

ja an jeden link muss eine session id angehängt werden!

wenn du den apache webserver benutzt, kannst du aber eine umgebungsvariable setzen, damit der server automatisch die id anhängt.

wie diese genau heisst, kann ich dir aber nicht sagen.

session_start() muss trotzdem in den nächsten dateien stehen, da damit die "alte" session "wiederaufgenommen" wird

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...