Login mit Session auf einmal nicht mehr funktionsfähig

g-zus

Erfahrenes Mitglied
Hey Leute,

hab mehrere Seiten mit Logins auf einem Server liegen deren Login-Systeme auf dem (neueren) folgendem Tutorial basieren:

http://www.tutorials.de/forum/showthread.php?t=9684

Bisher haben die ja fast immer einwandfrei gearbeitet, aber plötzlich, aus heiterem Himmel wollen die Teile nicht mehr. Wenn man sich einloggt wird man auf die Startseite wo man seine benutzerdaten eingibt zurückgeleitet. Es wird aber nicht angezeigt (wie üblich!), dass die benutzerdaten falch waren, sondern man wird einfach zu der Seite zurückgeleitet.
Lösungvorschläge?

Das Problem hatte ich schon mal und wusste auch nicht worans gelegen hat, als es dann wieder funktionierte. Aber langsam bin ich es satt mich alle paar Monate neu in den PHP-Code der alten Seiten einzuarbeiten nur damit ich das komplette Login-System neu programmieren/schreiben kann und selbst dann noch Tage rumprobieren muss bis es klappt.

Irgendwie werden einfach die $_SESSION-Variablen nicht übergeben oder gar nicht erst registriert.

Was ist eigentlich der genaue Unterschied wenn ich eine session starte und eine Variable $_SESSION["var"] nenne oder eine session starte und die Variable dann übergeben mit session_register ("var"); ?"?
 
Zuletzt bearbeitet:
Nur mal so eine Frage. Hast Du das Service Pack 2 von Microsoft? Wenn ja, kann ich Dir sagen, dass ich das Problem auch mal hatte mit den Sessions. Auf einem Board hat mit der POPUPBLOCKER immer keine Session zugesagt, erst als ich die Seite "authorisiert" habe, war es zuzugreifen. Das war komischerweise aber bisher nur bei 2 Seiten so.

Nunja, vielleicht haste ja das gleiche Problem.

Bye,


WACSF

PS: Falls Du Dir ein Formular gebastelt hast, damit du User über ein Webinterface hinzufügen kannst, könnte es sein, dass du etwas bei der md5 umwandlung verplant hast. Das war bei mir auch ein Problem, welches dazu führte, dass ich mich nichtmal mehr über die Logins einloggen konnte, die ich in der "anlegen.php" hatte.
 
Hallo,

prinzipiell ist es mir nicht bekannt, dass das setzen von Session Variablen Probleme bereitet.
Aber wie auch immer, für ganz einfache Zwecke kannst du auch ohne Session ein Login-Script programmieren. Man nehme dazu
$HTTP_SERVER_VARS['REMOTE_ADDR'] welches dir dann die IP Adresse des einzuloggenden Users zurückgibt. Diese welche kannst du in deiner Datenbank speichern und bei jedem Seitenaufruf abgleichen.
Aber vorsicht, das funktioniert nur für ganz einfache zwecke, da nicht alle Internet Dienstanbieter das IP-Forwarding unterstützen. z.B. weiß ich, dass sich definitiv kein AOL user dann mehr einloggen kann.
Ansonsten würde ich mal überprüfen wie der Benutzername an die Session übergeben wird. Ich hatte da auch mal Probleme mit ä,ö,ü Leerzeichen usw. Deswegen habe ich ein base64decode() vor dem schreiben und base64encode nach dem auslesen eingebaut.
Zu guter letzt probier es doch mal anstelle von header() mit einem html meta refresh, das läuft bei mir auch besser:
echo "<meta http-equiv=\"refresh\" content=\"0;url=http://www.deinehomepage.de/$site\">";
 
Zuletzt bearbeitet:
Hi,

so ein ähnliches Problem mit den Session hab ich auch wenn die "Sitzungscookies" vom IE nicht mehr zugelassen werden. Ich hatte bisher noch keine Zeit es zu lösen aber durch Übergabe der Session ID im Link etc. sollte es gehen.

@Darkillusion: Unter Internetoptionen > Datenschutz > Erweitert kann man auch ohne SP2 die Sitzungscookies abschalten. Oder man verbietet einfach alle Cookies dann gehen auch keine Sessions mehr.
 
fh_study hat gesagt.:
Hallo,

prinzipiell ist es mir nicht bekannt, dass das setzen von Session Variablen Probleme bereitet.
Aber wie auch immer, für ganz einfache Zwecke kannst du auch ohne Session ein Login-Script programmieren. Man nehme dazu
$HTTP_SERVER_VARS['REMOTE_ADDR'] welches dir dann die IP Adresse des einzuloggenden Users zurückgibt. Diese welche kannst du in deiner Datenbank speichern und bei jedem Seitenaufruf abgleichen. [...]

Man beachte dabei aber, dass mehrere Leute in einem Netzwerk, die hinter einem Router sitzen, nach außen hin die selbe IP haben. Somit kannst du diese dann nicht mehr voneinander unterscheiden. Ich würde zusätzlich mit einer Art SessionID (md5-Zeichenfolge) arbeiten, nur dass du diese in der Datenbank speicherst.
 
jojo, sowas ähnliches mit IP-speichern hatte ich bereits, das war mein altes Login-Script, das aber unglaublich umständlich war, weil ich 3 variablen pro Link übergeben musste, den usernamen, die Session-ID und eine check-id, die aus einer mehrfachkodierung von usernamen und passwort bestand (eigene "Kodierungsroutine" und die dann nochmal mit md5() coiert!).

War alles sehr kompliziert, aber damit hatte ich dann die Hauptsicherheitslöcher getopft.

Deshalb war ich ja so froh, dass ich ein so eifnaches und funktionierendes Login-System gefunden hatte.

Also ich verwende auf dem PC hier noch Windows ME, ganz einfach weil ich zu faulm zum umstellen bin. (Backups!)

Ich werds mal mit der META-Weiterleitung probieren und überprüfen obs am Login-Script liegt oder am CHECK-Script, das den Login-Status in jeder File überprüft.

THX schonmal für die ganze Hilfe Leute, ich meld mich bei Gelegenheit wieder, wenn was Neues gibt.
 
Hmm...ich glaube ich habe ein ähnliches Problem.
Habe folgendes festgestellt.

<?php include(".../checkuser.php"); ?>
<html>
<head>
<title>test</title>
</head>
<body>
<p>
Hallo <?php echo $_SESSION["user_nickname"]; ?>

So soll der Code eigentlich aussehen. Allerdings wird der user_nickname nicht angezeigt.
wenn ich davor die session starte wird er angezeigt. dies mache ich aber schon in der checkusers. also bekomm ich ne fehlermeödung weil ich es "doppelt" habe. Ich kann mir aber nicht erklären was an der checkusers falsch ist, da es ja so nicht geht.,

checkusers sieht so aus:
<?php
session_start ();
if (!isset ($_SESSION["user_id"]))
{
header ("Location: .../login.php");
}
?>
 
aaaaalso, so plötzlich wie bei mir das problem gekommen ist, so schnell ist es auch wieder verschwunden.
Plötzlich funktioniert das Login Script wieder (der Server allgemein, MySQL-Datenbank hat auch gesponnen!) obwohl ich nicht eine Code-zeile geändert hab ... ^^

naja, danke für eure Bemühungen. :)


@Scared:

Probiers mal so:

schreib deine checkuser.php so um:

PHP:
<?php
session_start ();
if (!isset ($_SESSION["user_id"]))
{
   header ("Location: .../login.php");
}else{
   user_nickname = $_SESSION["user_nickname"];
}
?>

dann musst du halt in der Hauptfile den variablennamen ändern, aber dürfte klappen.
 
Zurück