|
|
|
|
|
|
|
#1 (permalink) |
|
Benutzer
|
Hallo zusammen,
ich hab nen Problem mit der Serialisierung von Objekten in eine Session. Aber nun erstmal grundlegendes zum Verständnis. Ich habe eine Startseite (index.php) diese instantiiert meinen Dispatcher (Dispatcher.class.php). Im Dispatcher werden die Requests (POST/GET) zusammengeführt und gleichermaßen behandelt. Wenn jetzt z.B. die Variable "page" den Wert "login" enthält (egal ob POST/GET) dann wird ein SecurityManager instantiiert (SecurityManager.class.php) der eine Methode (login($username, $password)) beinhaltet. Der SecurityManager beinhaltet zusätzlich Benutzername, BenutzerID, Rechte usw. daher muss ich den SecurityManager via Sessions immer im Zugriff haben. Jetzt kommt genau das Problem. Nach der Instantiierung wird der SecurityManager in ne Session geschoben. Code:
$_SESSION['securityManager'] = new SecurityManager(); Der erste Zugriff auf das Objekt via Session klappt problemlos. Das heißt wenn ich nach Instantiierung direkt auf das Objek zugreife bekomme ich ne Ausgabe. Lade ich z.B. die Seite neu, bekomme ich keine Ausgabe - Hier ist das Problem. Ich bekomme einfach keine Ausgabe nachdem irgendwas passiert (Request o.Ä.) ist. Selbstverständlich habe ich im Dispatcher und auch in der index File jeweils den include des SecurityManagers vor dem session_start() gemacht. Hoffe ich könnt mir helfen - es ist echt wichtig ... Danke im Vorraus. Gruß Sven |
|
|
|
|
|
|
PHP Code Flüsterer
Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten
|
|
|
|
#2 (permalink) |
|
Moderator
Registriert seit: 02.10.2006
Beiträge: 3.679
PHP-Kenntnisse: Fortgeschritten ![]() |
Von was für einer Ausgabe redest du? Wird garnichts mehr ausgegeben (Fatal Error) oder erwartest du eine bestimmte Ausgabe die nicht kommt? Wenn ja welche und wie sieht der entsprechende Code aus?
Hast du irgendwelche nicht serialisierbaren Dinge in der Klasse (DB-Verbindungen, Handler, ...) um die du dich nicht kümmerst?
__________________
GAGA, GOGO, TRALAFITTI! |
|
|
|
|
#3 (permalink) | ||
|
Benutzer
|
Hallo,
erstmal Danke für die Antwort. Zitat:
Code:
<?php
<?php
// index.php
@include ("SecurityManager.class.php");
@include ("Dispatcher.class.php");
@session_start();
if(isset($_SESSION['securityManager']))
{
print_r($_SESSION['securityManager']);
}
$request = array();
$request = @array_merge($_POST, $_GET);
$dispatcher = null;
$dispatcher = new Dispatcher();
$dispatcher->init();
$dispatcher->setRequest($request);
$dispatcher->handleRequest();
echo $dispatcher->getResponse();
?>
<?php
// Dispatcher.class.php
@include ("SecurityManager.class.php");
@session_start();
class Dispatcher
{
private $request = null;
private $response = null;
public function init()
{
if(!isset($_SESSION['securityManager']))
{
$_SESSION['securityManager'] = new SecurityManager();
}
}
public function handleRequest()
{
$this->response = $_SESSION['securityManager']->getUsername();
}
public function setRequest($request)
{
$this->request = $request;
}
public function getResponse()
{
return $this->response;
}
}
?>
<?php
// SecurityManager.class.php
class SecurityManager
{
private $username = null;
public function login($username, $password)
{
$isLoggedIn = false;
$this->username = $username;
return $isLoggedIn;
}
public function getUsername()
{
return $this->username;
}
}
?>
?>
Zitat:
Gruß Sven |
||
|
|
|
|
#4 (permalink) |
|
Erfahrener Benutzer
Registriert seit: 03.09.2004
Beiträge: 11.359
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Versuch mal anstatt:
PHP-Code:
PHP-Code:
__________________
robo47.net - Blog, Codeschnipsel und mehr | |
|
|
|
|
#6 (permalink) |
|
moderatives Dielektrikum
Registriert seit: 21.05.2008
Beiträge: 21.316
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Mag zwar nicht die Lösung sein, aber warum doppelst Du die Aufrufe von session_start () und bindest aus Dispatcher.class.php erneut securityManager ein? Das gibt doch Streß. Und (oder gerade deshalb?) warum blockst Du alle Fehler mit @?
__________________
-- „Eins ist Fakt: Gescannt wird nackt!“ Privatsphäre 2.0 - Nacktscanner mit Eyetracking. Unser Flugzeug darf kein geschlechtsfreier Raum sein. -- |
|
|
|
|
#7 (permalink) | |
|
Erfahrener Benutzer
Registriert seit: 19.08.2008
Beiträge: 129
![]() |
SecurityManager... wow - klingt super.
Zitat:
Suspekt… � Blog Archive � PHP 5.3 and Delayed Cross Site Request Forgeries/Hijacking darüber hinaus deutet es auf einen unsauberen / schlampigen programmierstil hin. weiter im text: was versprichst du dir von der exzessiven verwendung des @-operators? wäre gar nicht verkehrt, sich für die php-fehlermeldungen zu interessieren. wenn du meinst, dass der code ohne die dinger nicht auskommt, musst du ihn umstricken. wenn du behauptest, dass es anders nicht machbar ist: PHP Einsteiger - php.de cx |
|
|
|
|
|
#8 (permalink) |
|
Moderator
Registriert seit: 02.10.2006
Beiträge: 3.679
PHP-Kenntnisse: Fortgeschritten ![]() |
Hi Cortex,
kannst du mal bitte näher erklären, warum ein Zusammenlegen von GET und POST ein Sicherheitsrisiko ist? In dem Artikel, den du verlinkst wird das auch nicht behauptet oder belegt - lediglich wenn auch noch $_COOKIE (wie bei $_REQUEST) hinzukommt gibt es eine potentielle Gefahr. Prüfen ob es ein GET oder POST Request ist kann er auch mit $request->isPost() oder ähnlichem. Und CSRF ist so oder so möglich wenn man nichts weiteres dagegen unternimmt. Überseh ich was?
__________________
GAGA, GOGO, TRALAFITTI! |
|
|
|
|
#9 (permalink) |
|
Benutzer
|
Hallo zusammen,
danke für die Hinweise - es lag wirklich an den Fehlerausgaben diese haben mich darauf hingewiesen das ein include fehlgeschlagen ist. Cortex - danke für Deine, in meinen Augen sehr "angreifende" Kritik - ich werde mir den Artikel durchlesen und ggf. mein Konzept überdenken aber nur ein Tip - vllt. solltest Du etwas Deine Schreibart überdenken - diese kommt sehr "arrogant" rüber. Sofar - Problem gelöst - danke an alle. Gruß Sven |
|
|
|
|
#10 (permalink) | ||
|
Erfahrener Benutzer
Registriert seit: 19.08.2008
Beiträge: 129
![]() |
Zitat:
Zitat:
dass du bspw. fehlermeldungen ausblendest und dich über nicht funktionierende skripte wunderst, qualifiziert dich in meinen augen nicht gerade als entwickler mit erfahrung (bin übrigens selbst autodidakt) - ergo solltes du nicht im unterforum "PHP-Fortgeschrittene" posten, sondern dich zuallererst mit den basics der programmierung beschäftigen. sorry, wenn das wieder zu arrogant war... cx |
||
|
|
|
|
|
|
PHP Code Flüsterer
Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten
|
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Referenzen auf Objekte innerhalb eines Arrays | PHP-Fortgeschrittene | 6 | 31.08.2009 17:06 | |
| Login-System ohne Sessions ratsam? | MauMau | PHP Tipps 2008 | 4 | 02.09.2008 12:09 |
| 2 Sessions | Kein Genie | PHP Tipps 2006 | 8 | 21.07.2006 15:45 |
| Objekte vergleichen | PHP-Fortgeschrittene | 4 | 08.12.2005 16:20 | |
| [Erledigt] probleme mit sessions | PHP Tipps 2007 | 1 | 17.11.2005 10:43 | |
| [Erledigt] Nach Einfügugng der Sessions funktioniert mein Program nicht | PHP-Fortgeschrittene | 1 | 02.10.2005 06:13 | |
| Sessions! | DER_Brain | PHP Tipps 2005-2 | 5 | 30.06.2005 14:51 |
| 2 Sessions? | PHP Tipps 2005 | 5 | 29.04.2005 19:04 | |
| objekte in sessions mit register globals of | PHP Tipps 2005 | 1 | 12.03.2005 17:06 | |
| Proble mit Sessions | PHP Tipps 2005 | 7 | 07.02.2005 17:42 | |
| Sessions | PHP Tipps 2005 | 6 | 14.01.2005 15:02 | |
| variablen per sessions übergeben | PHP Tipps 2005 | 5 | 13.01.2005 12:09 | |
| Sessions und ZoneAlarm | PHP Tipps 2004 | 4 | 25.08.2004 17:35 | |
| [Erledigt] Usermanagement mit Sessions - Sicherheitsprobleme ? | PHP Tipps 2004 | 0 | 30.06.2004 09:49 | |
| [Erledigt] Sessions, sessions und nochmal sessions | PHP-Fortgeschrittene | 0 | 06.06.2004 00:36 | |