Zerod: Object in Session, leer in include

Hallo,

ich bin gerade dabei in paar tests mit einem object zu machen und jetzt habe ich zur zeit folgendes problem:

in meiner index.php initialisiere ich ein game objekt.
dann überprüfe ich die eingegebenen login datenund speichere die spieler id im objekt und ein isLogt=true in einer session variable, wenn das login erfolgreich war.
dann überprüfe ich das isLogt und bei true include ich die main.php.
in der main.php hab ich einen link der ein get parameter an die url hängt.
zusätzlich ist auf der main noch eine überprüfung auf das get parameter.
wen dieses vorhanden ist soll er mir die spieler ID die noch im object gespeichert sein soll, ausgeben.
aber leider ist das objekt wieder auf anfang zurückgesetzt(glaube ich).

hier das ganze als code:

index.php

  
<?php  
  
include('include/classes.php');  
session_start();  
  
$_SESSION["game"] = new game();  
  
  
if(isset($_POST['anmelden']))  
{  
	$game->login($_POST['name'],$_POST['pw'],$_SESSION['playerID']);  
	$_SESSION['login'] = $_SESSION["game"]->login($_POST['name'],$_POST['pw'],$_SESSION['playerID']);  
	if($_SESSION['login'])  
	{  
		echo 'login erfolgreich';	  
	}  
	else  
	{  
		echo 'Login Daten ungültig';  
	}  
}  
  
if(!$_SESSION['login'])  
{  
?>  
<form action="<?php echo $PHP_SELF; ?>" method="POST">  
<input type="text" name="name" value="admin">  
<input type="password" name="pw" value="admin">  
<input type="submit" name="anmelden" value="Anmelden">  
</form>  
<?php  
}  
else  
{  
	include('main.php');	  
}  
  
  
?>  

main.php

  
<?php  
include_once('include/classes.php');  
session_start();  
  
if(isset($_GET['id']))  
{  
	if($_GET['id']=="wald")  
	{  
	echo $_SESSION["game"]->playerID;  
	}  
}  
?>  
<a href="<?php echo $PHP_SELF.'?id=wald'?>">Wald</a><br>  

was hab ich da falsch gemacht?

  1. Hi!

    aber leider ist das objekt wieder auf anfang zurückgesetzt(glaube ich).

    Programmieren ist keine spirituelle Angelegenheit. Stell das error_reporting auf E_ALL (und display_errors auf on) und lass dir die Inhalte von Variablen ausgeben (mit var_dump()), von denen du annimmst, dass da was drinsein müsste.

    $game->login($_POST['name'],$_POST['pw'],$_SESSION['playerID']);

    Was ist $game? Das ist für außenstehende nicht nachvollziehbar, weil es hier zum ersten Mal auftaucht.

    <form action="<?php echo $PHP_SELF; ?>" method="POST">

    Was ist $PHP_SELF? Du kannst action="" notieren, wenn du auf die selbe URL verweist. $_SERVER['PHP_SELF'] ohne htmlspecialchars() einzubauen ist jedenfalls eine Sicherheitslücke.

    main.php
    session_start();

    Wieso startest du die Session noch einmal? Das ist doch schon in der index.php geschehen. Außerdem ist das an der Stelle erfolglos, weil in der index.php sowohl durch das echo als auch durch das Formular schon eine Ausgabe erzeugt wurde.

    echo $_SESSION["game"]->playerID;

    Ich sehe nicht, wo die playerID gesetzt wurde. Hast du dich dort davon überzeugt, dass das geklappt hat? Und was enthält $_SESSION["game"] an dieser Stelle?

    was hab ich da falsch gemacht?

    Du zeigst ein nicht nachvollziehbares Problem, weil wesentliche Teile fehlen. Außerden betreibst du vermutlich kein Debugging. Konkretisiere dein Problem auf den eigentlichen Punkt, wenn es sich nicht schon durch die Kontrollausgaben und die durch das error_reporting-E_ALL sichtbaren Notice-Meldungen von selbst offenbart.

    Lo!

    1. vielen dank aber man konnte das porblem schon am code sehen^^. ich hab das object beim Neuaufruf der Seite neu initialisiert. So Problem ist gelöst^^

      1. Hi!

        aber man konnte das porblem schon am code sehen^^.

        Nein.

        off:PP

        --
        "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
        1. Hi!

          aber man konnte das porblem schon am code sehen^^.
          Nein.

          Na, doch. Der konkrete Fall lag an dem

          $_SESSION["game"] = new game();

          das immer nach dem Start der Session ausgeführt wurde und somit zu einem Löschen der bisherigen Werte führt. Unabhängig davon hat er aber noch eine Menge anderer Ungereimtheiten im Code.

          Lo!

          1. Hi!

            aber man konnte das porblem schon am code sehen^^.
            Nein.

            Na, doch.

            Stimmt!

            Bei ($coffee == 0.2) sollte ich nicht mehr antworten.

            off:PP

            --
            "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)