[PHP]IE geeft problemen met inloggen dmv sessies

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Het is heel erg vreemd. Ik dacht dat sessies altijd op de server werden opgeslagen en daardoor min of meer browser onafhankelijk zijn. Echter geeft Internet Explorer problemen bij bepaalde checks naar een sessie.

Het is als volgt: ik heb een user gedeelte waarvan in de constructor van de klasse ($plugin->user) onder andere wordt gekeken welk user level de gebruiker krijgt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
if($_COOKIE["sessionID"]){
    //Cookie was set to stay logged in
    $_COOKIE["sessionID"] = mysql_real_escape_string($_COOKIE["sessionID"]);
    $result = $database->Execute("SELECT user_id, ip FROM plugin_user_session WHERE hash='".$_COOKIE["sessionID"]."'");
    $result = $result->FetchRow();
    if($result["ip"] == $_SERVER["REMOTE_ADDR"]){
        $_SESSION["hash"] = $_COOKIE["sessionID"];
    }
}

if($_SESSION["hash"]){
    //Visitor is a user (and has already visited a page in this session)
    $result = $database->Execute("SELECT S.user_id, S.last_visit, U.name, U.level
        FROM plugin_user_session AS S, plugin_user_users AS U
        WHERE S.user_id = U.id
        AND S.ip='".$_SERVER["REMOTE_ADDR"]."'
        AND S.hash='".$_SESSION["hash"]."'");
    if($result){
        $result = $result->FetchRow();
        $this->id = $result["user_id"];
        $this->name = $result["name"];
        $this->level = $result["level"];
        $this->last_visit = $result["last_visit"];
    }else{
        $this->level = 100;
    }
}else{
    $this->level = 100;
}
Een cookie is dus gezet wanneer de user ingelogd wil blijven. Een sessie wordt aangemaakt wanneer de user is ingelogd. De user heeft dan een level van < 100. Als er geen sessie bestaat is de user dus een gast en krijgt het level 100.

Nu is het probleem zo dat ik dikwijls met Internet Explorer browse op de TU, en een item in mn blog wil posten. Het user id wordt opgehaald van deze klasse: $plugin->user->id. Dat moet dus mijn user id zijn. Dus niet! De query geeft aan dat de variabele null is :?
In Firefox werkt alles echter perfect....

Wat kan hier fout aan zijn? Kan het zo zijn dat met een bepaalde policy bij de client $_SERVER en $_SESSION anders reageren? Het probleem doet zich voor bij zowel het bestaan van een cookie als het niet bestaan ervan. Wellicht dat het iets te maken heeft met deze reactie op php.net, maar zeker ben ik nog niet.

Ik zie wel dat ik ingelogd ben en kan ook afgeschermde pagina's bekijken. De sessie werkt volgens mij dan wel aangezien ik kijk of je ingelogd ben dmv deze functie:
PHP:
1
2
3
4
5
function user_logged_in(){
    if($_SESSION["hash"]){
        return true;
    }
}

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Je kijkt niet of FetchRow() daadwerkelijk een row retourneerd.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
crisp schreef op zaterdag 17 februari 2007 @ 22:13:
Je kijkt niet of FetchRow() daadwerkelijk een row retourneerd.
Mm, je hemt gelijk. Ik verander het wel gelijk.

Het meest vreemde is dat ik dus op de TU problemen had met inloggen. Ook bij een vriend werd er geen id gegeven. Probeer ik het echter thuis met een andere pc (heb zelf geen IE) lukt het wél :? Ik snap er weinig meer van, maar zal maandag wat meer proberen uit te vinden...