IE geeft problemen met inloggen dmv sessies
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:
Code (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
30
31
32
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
30
31
32
<?
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;
}
?>
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;
}
?>
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:
Quote:
function user_logged_in(){
if($_SESSION["hash"]){
return true;
}
}[/]
if($_SESSION["hash"]){
return true;
}
}[/]
Gewijzigd op 01/01/1970 01:00:00 door Sneeuwvlok
dikke kick
té vroege bump
Laatste bump, als ik dan nog geen reactie krijg kap ik ermee
Die bestaat zo te zien niet in alle gevallen, alleen als een bepaald cookie geset is + het ip overeenkomt met een in de database. Misschien dat je iets van !empty() moet gebruiken?