php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.09.2008, 01:29  
Neuer Benutzer
 
Registriert seit: 13.09.2008
Beiträge: 2
prophil befindet sich auf einem aufstrebenden Ast
Standard include mit tücken

Hi zusammen,

ich verzweifel und hoffe, dass hier ein paar Leute sind, die mir helfen können. Ist sicher total simple..
Ich stecke die instanz eines objektes in die Session. das klappt aber nur, wenn die klassendefinition in der index.php steht, und nicht in einem include. Klingt komisch, ist aber so :P
Hier mal der abgespeckteste Code, vielleicht sagt der mehr.
PHP-Code:
<?php
session_start
();

class 
test{  public $muh; }
//include('sql_include.php'); 
/* im Include würde folgendes stehen:
<?php class test{ public $muh; } ?>*/

if(!isset($_SESSION['test'])){
    echo 
"erstelle: "
    
$_SESSION['test'] = new test();
}else{
    echo 
"war schon erstellt: "
}

echo 
"lese:".$_SESSION['test']->muh;
echo 
"setze: "$_SESSION['test']->muh rand(); echo $_SESSION['test']->muh;
?>
Ist der code "class.. " in der index.php selbst, gehts. Das Ergebnis wäre nach dem ausführen und dem aktualisieren folgendes:

PHP-Code:
war schon erstelltlese:545192192setze1753082265 
nur wenn ich das "class.." aus der Datei raus nehme und in ein Include packe (weils da einfach hübscher aussieht), gehts nicht.

Ich mach das ja jetzt schon ne Weile, aber entweder ich steh da total aufm schlauch oder da is was kaputt.. habs auf zwei Servern probiert.

Ich freue mich auf eure Antworten
Gruß
PhiL
prophil ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 13.09.2008, 01:40  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Ich würde mal sagen, bevor php das script ausführt wird es analysiert, werden klassen gefunden, werden diese auch schon deklariert, includes werden dabei nicht ausgewertet, dann wird der code von der ersten Zeile ab ausgeführt, da er zu dem Zeitpunkt wenn du session_start() aufrufst die klasse (da sie im include ist was erst später kommt) noch nicht kennt, kann er das objekt nicht entserialisieren.

Kurz:

Dein Include muss vor dem session_start(); stehen.
robo47 ist offline  
Alt 13.09.2008, 09:32  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Hallo.
Zitat:
Zitat von prophil Beitrag anzeigen
gehts nicht.
Bitte immer eine genauere Fehlerbeschreibung angeben. Was wurde erwartet? Was genau ist passiert? Woher weißt Du, dass es nicht so gelaufen ist, wie gewünscht? Gibt es Fehlermeldungen, Warnungen oder Hinweise von PHP? Steht das error_reporting auf E_ALL? Werden Fehler angezeigt (zum Beispiel per display_errors)?
David ist offline  
Alt 13.09.2008, 13:14  
Neuer Benutzer
 
Registriert seit: 13.09.2008
Beiträge: 2
prophil befindet sich auf einem aufstrebenden Ast
Standard

Ich glaubs ja nicht :P
Da schreib ich nachts um halb 2 das größte Problem was ich seit jahren in php hatte, und 10 min später ists auch schon gelöst )
Du hattest recht, das ganze funktioniert wenn session_start nach den includes kommt. und mit der erklärung hab ichs auch fast kapiert :P
Ich danke vielmals!

das "gehts nicht" hätte ich trotzdem besser beschreiben können. Hier nachträglich: die Variable $_SESSION['test']->muh hat keinen Wert, wenn die Klasse in einem Include steht und nicht direkt im Quelltext.

Wenn man das include über die sessions packt, dann klappts! da hätte ich noch ewig dran gesetzt, da ich die session_start() immer direkt nach php gesetzt hab.
*Happybin*
prophil ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
include() ersetzen Shadow21 PHP Tipps 2006 3 30.08.2008 14:13
include isoliert ausführen – Lösungsansatz gesucht veit PHP-Fortgeschrittene 8 09.04.2008 09:26
hinter include wird eine 1 angezeigt |~Râdîant~| PHP Tipps 2008 8 19.09.2007 13:52
include Dateien wieder ausängen o.Ä. netti PHP Tipps 2007 8 17.12.2006 15:14
include problem Canni PHP Tipps 2006 26 14.11.2006 14:24
include, nur bestimmten teil neu laden Calli PHP Tipps 2006 2 27.01.2006 15:57
include, get-variablen schachteln PHP Tipps 2005-2 5 24.09.2005 16:03
Auf Firmen-Server funzt kein include aus fremden Verzeichnis PHP-Fortgeschrittene 3 19.07.2005 16:49
[Erledigt] Include liegt in einem anderen Verzeichnis - es geht nix PHP Tipps 2005-2 3 03.07.2005 22:40
include innerhalb einer seite rückgängig machen PHP Tipps 2005 2 27.03.2005 20:26
Warum eigentlich immer include? Zero.exe PHP Tipps 2005 10 17.03.2005 15:30
[Erledigt] Sessions auch bei include aktiv? PHP Tipps 2005 1 28.02.2005 19:58
[Erledigt] Problemme mit include... PHP Tipps 2004-2 6 30.11.2004 12:20
HTTP_GET_VARS + Include = Array leer PHP Tipps 2004-2 3 24.11.2004 15:12
include() und die performance PHP-Fortgeschrittene 11 24.06.2004 19:04

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
session_start() class include, include php class

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:59 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum