session problem

#0 :: 06.03.2011 - 19:32
  • GameOver
  • User

Index.php

<?php
session_start();

// --- include settings.php and includeAllClasses.php

require_once("settings/settings.php");
require_once("includeAllClasses.php");
// --- if there isn`t a user session id, include login.php, else create a new object of frontController objekt
if($_SESSION['user']['id'] > 0)
{
HTML::printHead();
HTML::printBody();
$frontController = new frontController($_GET['module'], $bgRoot);
HTML::printFoot();
}
else
{
HTML::printHead();
HTML::printBody();
require_once("login.php");
HTML::printFoot();
}
?>
//login.php -> Der Teil der scheinbar net funktioniert:
$data = $mysql->doFetchObject("SELECT `id`, `username` FROM `users` WHERE `password` = '".$password."' AND `username` = '".$username."' LIMIT 1");
if(isset($data->id))
{
$_SESSION['user'] = array();
$_SESSION['user']['id'] = (int)$data->id;
$_SESSION['user']['username'] = $data->username;
header("Location: ".$bgRoot."/index.php");
}

Logge ich mich ein, werde ich auf die index.php umgeleitet, allerdigns wird wieder das Login Formular angezeigt!? Ich frage die id beim login ab und speichere sie im Session array.
In der index.php überprüfe ich einfach folgendes:

if($_SESSION['user']['id'] > 0)

^
|-- Ist das der Fall, sollte normalerweise kein Login Formular angezeigt werden, leider ist es genau ungekehrt :(
ne Idee woran das liegen könnte?

Grüße Nico

MC-Web

#1 :: 06.03.2011 - 19:59
  • GameOver
  • User

Ich habe nun ein wenig debuggt und mir ist aufgefallen, dass definitiv kein $_SESSION Array angelegt wird.
Habe daraufhin mal phpinfo() durchgeführt:

Directive Local Value Master Value
session.auto_start Off Off

Kann es sein, dass ich session auto_start auf 1 stellen muss, damit ich das $_SESSION Array verwenden kann?

MC-Web

#2 :: 06.03.2011 - 21:06

Hallo Nico,

hast du dir mal das Objekt $data ausgegeben?
Ich vermute den Fehler da bzw. bei der SQl Abfrage.

// Das erzeugt eine Warnung wenn die id noch nicht gesetzt wurde
if($_SESSION['user']['id'] > 0) {
...
}
// So ist es besser
if(isset($_SESSION['user']['id']) && $_SESSION['user']['id'] > 0) {
...
}
// Das ist doch etwas überflüßig?
if($_SESSION['user']['id'] > 0)
{
HTML::printHead();
HTML::printBody();
$frontController = new frontController($_GET['module'], $bgRoot);
HTML::printFoot();
}
else
{
HTML::printHead();
HTML::printBody();
require_once("login.php");
HTML::printFoot();
}
// so gehts auch
HTML::printHead();
HTML::printBody();

if(isset($_SESSION['user']['id']) && $_SESSION['user']['id'] > 0)
$frontController = new frontController($_GET['module'], $bgRoot);
else
require_once 'login.php';

HTML::printFoot();


Gruß Thomas

Admin of Ultima-Project.net

#3 :: 08.03.2011 - 11:40
schreibe ich nach session_start() print_r($_SESSION), erhalte ich nur folgende ausgabe: Array ( ) 

Eigentlich sollte auch das User Array() ausgegeben werden.

Wenn du zu beginn deines Skriptes

error_reporting(-1);

einfügst, kommen dann irgendwelche Meldungen?

Admin of Ultima-Project.net

#4 :: 08.03.2011 - 17:08

Hmm so langsam bin ich auch Ratlos ...

Wird in deinem Browser das PHPSESSION Cookie gesetzt?

Oder überschreibst du die $_SESSION an irgend einer Stelle?

Admin of Ultima-Project.net