-
Re: PHP OO Probleem
Daniel Tryba wrote:
> Tjerk Wolterink <tjerk@wolterinkwebdesign.com> wrote:
>
>>ok hier voorbeeld code die niet werkt in php 4.3.10 en wel in 4.3.6:
>
>
>>De fout zit m volgens mij in de body van function start_session()
>>maar hoe dat weet ik niet!
>
>
> Niet reproduceerbaar (PHP Version 4.3.10-2)
>
> Maar het is dan ook niet een zelfstandig script, de functie
> debug_print_ass_array() mist, maar ik neem aan dat die niet echt
> belangrijk is. De regels met global zijn nogal onverwacht in een stuk OO
> net zoals en de aanroep van some_debu() in de constructor.
>
> http://tmp.tryba.nl/crash.php
>
> Geen rare onverwachte foutmeldingen, anders dan degene die je nu ziet
> (let op de toevoeging van error_reporting
> (http://tmp.tryba.nl/crash.phps)).
>
>
>
De fout zit m in de session_start() in de start_session() methode van XcdPage.
Elders in deze thread heb ik duidelijk uitgelegd waar de fout lag.
Maar waarom het fout gaat weet ik nog niet.
Hoe handelt php met sessies. want daarin gaat het dus fout.
-
Re: PHP OO Probleem
Daniel Tryba wrote:
> Tjerk Wolterink <tjerk@wolterinkwebdesign.com> wrote:
>
>>ok hier voorbeeld code die niet werkt in php 4.3.10 en wel in 4.3.6:
>
>
>>De fout zit m volgens mij in de body van function start_session()
>>maar hoe dat weet ik niet!
>
>
> Niet reproduceerbaar (PHP Version 4.3.10-2)
>
> Maar het is dan ook niet een zelfstandig script, de functie
> debug_print_ass_array() mist, maar ik neem aan dat die niet echt
> belangrijk is. De regels met global zijn nogal onverwacht in een stuk OO
> net zoals en de aanroep van some_debu() in de constructor.
>
> http://tmp.tryba.nl/crash.php
>
> Geen rare onverwachte foutmeldingen, anders dan degene die je nu ziet
> (let op de toevoeging van error_reporting
> (http://tmp.tryba.nl/crash.phps)).
>
>
>
die kleine foutjes die zie ik niet hier. maar
daar gaat het niet om. Die klasse XcdPage is een stuk groter
en functies die worden aangeroepen bestaan onder normale omstandigheden wel.
Maar het gaat dus om de error waar ik het over heb. Waarbij een methode niet wordt gevonden.
-
Re: PHP OO Probleem
Tjerk Wolterink <tjerk@wolterinkwebdesign.com> wrote:
> De fout zit m in de session_start() in de start_session() methode van XcdPage.
> Elders in deze thread heb ik duidelijk uitgelegd waar de fout lag.
> Maar waarom het fout gaat weet ik nog niet.
Waarom werkt het hier dan wel? Ook je 2de stuk code werkt hier gewoon.
> Hoe handelt php met sessies. want daarin gaat het dus fout.
Ik zou niet weten waarom het fout zou kunnen gaan, echter:
-noem de methode niet session_start() (die bestaat namelijk al en
veroorzaakt op z'n minst verwarring).
-maak een eigen session object/handler buiten dit object (flexibiliteit
en overzicht)
-indien je echt in dit object wilt doen, waarom niet in de constructor?
-
Re: PHP OO Probleem
Daniel Tryba wrote:
> Tjerk Wolterink <tjerk@wolterinkwebdesign.com> wrote:
>
>>De fout zit m in de session_start() in de start_session() methode van XcdPage.
>>Elders in deze thread heb ik duidelijk uitgelegd waar de fout lag.
>>Maar waarom het fout gaat weet ik nog niet.
>
>
> Waarom werkt het hier dan wel? Ook je 2de stuk code werkt hier gewoon.
>
Joost mag het weten.
>
>>Hoe handelt php met sessies. want daarin gaat het dus fout.
>
>
> Ik zou niet weten waarom het fout zou kunnen gaan, echter:
> -noem de methode niet session_start() (die bestaat namelijk al en
> veroorzaakt op z'n minst verwarring).
nee start_session() bestaat al.
session_start() toch nog niet?
> -maak een eigen session object/handler buiten dit object (flexibiliteit
> en overzicht)
de XcdPage klasse is verantwoordelijk voor een page aanroep.
Hierin initialiseer ik alles,
waarom zou je dat in een aparte handler gooien?
Het is een taak van het object.
> -indien je echt in dit object wilt doen, waarom niet in de constructor?
Zou kunnen, maarja
ik vind dat het in de start_session methode hoort van het object.
En dan nog... waarom gaat dit fout. echt raar.
Ik heb het opgelost door een session_start() aan te roepen in
de eerste pagina die wordt aangeroepen.
Maar dat vind ik geen mooie oplossing.
-
Re: PHP OO Probleem
Tjerk Wolterink <tjerk@wolterinkwebdesign.com> wrote:
>> -noem de methode niet session_start() (die bestaat namelijk al en
>> veroorzaakt op z'n minst verwarring).
>
> nee start_session() bestaat al.
> session_start() toch nog niet?
Doh! Maar toch wel duidelijk een verkeerde naam.
>> -maak een eigen session object/handler buiten dit object (flexibiliteit
>> en overzicht)
>
> de XcdPage klasse is verantwoordelijk voor een page aanroep.
> Hierin initialiseer ik alles,
> waarom zou je dat in een aparte handler gooien?
> Het is een taak van het object.
Wat als je data opeens op een andere manier wilt opslaan?
>> -indien je echt in dit object wilt doen, waarom niet in de constructor?
>
> Zou kunnen, maarja
> ik vind dat het in de start_session methode hoort van het object.
>
> En dan nog... waarom gaat dit fout. echt raar.
> Ik heb het opgelost door een session_start() aan te roepen in
> de eerste pagina die wordt aangeroepen.
> Maar dat vind ik geen mooie oplossing.
gdb ertegen aan gooien, probeer een zinnig bugreport te creeren.
-
Re: PHP OO Probleem
Daniel Tryba wrote:
> Tjerk Wolterink <tjerk@wolterinkwebdesign.com> wrote:
>
>>>-noem de methode niet session_start() (die bestaat namelijk al en
>>> veroorzaakt op z'n minst verwarring).
>>
>>nee start_session() bestaat al.
>>session_start() toch nog niet?
>
>
> Doh! Maar toch wel duidelijk een verkeerde naam.
>
dacht het niet:
/**
* Starts the session on a safe manner,
* Session hijacking will be detected
*/
function start_session() {
global $debug;
// first start session
session_start();
//ini_set('session.save_path', '/home/sijmen/tmp');
//ini_set('session.name', 'hash'); # try to hide the session name..
if (!isset($_SESSION['ip']))
$_SESSION['ip']=$_SERVER['REMOTE_ADDR'];
if($_SESSION['ip']!=$_SERVER['REMOTE_ADDR']) {
trigger_error("Session Hijacking detected!", E_USER_WARNING);
}
$_SESSION["DEBUG"]=$debug;
}
wat is er nou verkeerd aan?
>
>>>-maak een eigen session object/handler buiten dit object (flexibiliteit
>>> en overzicht)
>>
>>de XcdPage klasse is verantwoordelijk voor een page aanroep.
>>Hierin initialiseer ik alles,
>>waarom zou je dat in een aparte handler gooien?
>>Het is een taak van het object.
>
>
> Wat als je data opeens op een andere manier wilt opslaan?
>
Mm daar heb je een punt.. Maar als ik in zulke mate een goed
onafhankelijk systeem wil bouwen dan zou ik wel in J2EE (of een andere goede OO taal)
gaan schrijven.
Php voldoet in dit geval.
>
>>>-indien je echt in dit object wilt doen, waarom niet in de constructor?
>>
>>Zou kunnen, maarja
>>ik vind dat het in de start_session methode hoort van het object.
>>
>>En dan nog... waarom gaat dit fout. echt raar.
>>Ik heb het opgelost door een session_start() aan te roepen in
>>de eerste pagina die wordt aangeroepen.
>>Maar dat vind ik geen mooie oplossing.
>
>
> gdb ertegen aan gooien, probeer een zinnig bugreport te creeren.
>
mm hek geen tijd voor :-)
In ieder geval bedankt voor je hulp.
-
Re: PHP OO Probleem
Tjerk Wolterink <tjerk@wolterinkwebdesign.com> wrote:
> function start_session() {
> // first start session
> session_start();
> }
>
> wat is er nou verkeerd aan?
session_start en start_session lezen preceis het zeflde, er is immers
aangetoont dat woorden niet letter voor letter worden gelezen maar naar
het woordbeeld wordt gekeken. Ik zag het verschil dus helemaal niet.
>> Wat als je data opeens op een andere manier wilt opslaan?
>>
>
> Mm daar heb je een punt.. Maar als ik in zulke mate een goed
> onafhankelijk systeem wil bouwen dan zou ik wel in J2EE (of een andere goede OO taal)
> gaan schrijven.
> Php voldoet in dit geval.
Stel je wilt de sessie anders opslaan (in een database bv), dan moet je
dat nu in die init() stoppen of alsnog een aparte file includen.
>>
>> gdb ertegen aan gooien, probeer een zinnig bugreport te creeren.
>>
>
> mm hek geen tijd voor :-)
> In ieder geval bedankt voor je hulp.
Dat idee had ik al, maar als je het rustig en gestructureerd aanpakt is
dat beter voor je haar en hart.
-
Re: PHP OO Probleem
Daniel Tryba wrote:
> Ik zou niet weten waarom het fout zou kunnen gaan, echter:
> -noem de methode niet session_start() (die bestaat namelijk al en
> veroorzaakt op z'n minst verwarring).
Hij bestaat niet, en noemt de method start_session, wat ik nog verwarrender
vind.
--
John Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Website design: http://johnbokma.com/websitedesign/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html
-
Re: PHP OO Probleem
Daniel Tryba wrote:
> Tjerk Wolterink <tjerk@wolterinkwebdesign.com> wrote:
>>> -noem de methode niet session_start() (die bestaat namelijk al en
>>> veroorzaakt op z'n minst verwarring).
>>
>> nee start_session() bestaat al.
>> session_start() toch nog niet?
>
> Doh! Maar toch wel duidelijk een verkeerde naam.
Eens :-D. Extreem verwarrend, na 3 dagen weet je dus niet meer welke
vorm het was (aan de andere kant, met PHP wen je daar aan)
>>> -maak een eigen session object/handler buiten dit object
>>> (flexibiliteit
>>> en overzicht)
>>
>> de XcdPage klasse is verantwoordelijk voor een page aanroep.
Geen idee wat Xcd betekend, maar het is altijd prettig om dingen een
duidelijke naam te geven.
>> Hierin initialiseer ik alles,
>> waarom zou je dat in een aparte handler gooien?
>> Het is een taak van het object.
>
> Wat als je data opeens op een andere manier wilt opslaan?
De vraag is: komt dat ooit aan de orde. Ikzelf vind het altijd erg
slecht om te veel tijdens het ontwikkelen "wat als" te doen, en ik
bedoel dan "wat als volgend jaar...".
>>> -indien je echt in dit object wilt doen, waarom niet in de
>>> constructor?
>>
>> Zou kunnen, maarja
>> ik vind dat het in de start_session methode hoort van het object.
Dat kan een keuze zijn, je ziet wel eens dat een database object
aangemaakt wordt, en er een open en een close is.
Opzich niks mis mee, maar geef 't een duidelijke naam.
--
John Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Website design: http://johnbokma.com/websitedesign/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html
-
Re: PHP OO Probleem
Daniel Tryba wrote:
> Tjerk Wolterink <tjerk@wolterinkwebdesign.com> wrote:
>> function start_session() {
>> // first start session
>> session_start();
>> }
>>
>> wat is er nou verkeerd aan?
>
> session_start en start_session lezen preceis het zeflde, er is immers
> aangetoont dat woorden niet letter voor letter worden gelezen maar
> naar het woordbeeld wordt gekeken. Ik zag het verschil dus helemaal
> niet.
Eens, de naam is verwarrend, maar er is op zich niks met een
session_start. De naamgeving die PHP hier gebruikt geeft mijn voorkeur
(tenminste pre-namespaces en OO that is), dus wat_actie. Met name spaces
zou een session object met een start method natuurlijk veeeel mooier
zijn.
Echter, bij een page object zit je dan weer met: hoe noemen we het, ik
zou dan voor session_start gaan als er meer session_ dingen zijn. Of als
ik ff snel er naar kijk,
Maar een andere naam lijkt mij beter.
>> Mm daar heb je een punt.. Maar als ik in zulke mate een goed
>> onafhankelijk systeem wil bouwen dan zou ik wel in J2EE (of een
>> andere goede OO taal) gaan schrijven.
>> Php voldoet in dit geval.
>
> Stel je wilt de sessie anders opslaan (in een database bv), dan moet
> je dat nu in die init() stoppen of alsnog een aparte file includen.
Is niks mis mee. Sterker, het idee van OO is nogal dingen verstoppen.
Als dat object pagina's aanmaakt is het wellicht een goed idee om daar
het hele sessiegebeuren in te verstoppen. Anders moet je weer allerlei
dingen gaan meegeven, of 100000x erger, globaal gaan zitten knoeien.
(wellicht meer PHP :-( )
> Dat idee had ik al, maar als je het rustig en gestructureerd aanpakt
> is dat beter voor je haar en hart.
Eens.
--
John Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Website design: http://johnbokma.com/websitedesign/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html
-
Re: PHP OO Probleem
<knip knip>
Wat mij overigens opvalt:
Je menu werkt niet, als je er over heen gaat dan verdwijnen de afbeeldingen
en komen ze niet meer terug.
In IE6.0 geeft hij kruisjes weer, in Firefox 1.0 geeft hij alleen wat lege
vakjes...
(Woow! Even totaal off-topic, maar dat Firefox werkt geweldig... :-)) )
--
Met vriendelijke groet,
Jorick de Lange
mail (at) jorickdelange (dot) nl
www.jorickdelange.nl
-
Re: PHP OO Probleem
Jorick de Lange wrote:
> <knip knip>
>
> Wat mij overigens opvalt:
>
> Je menu werkt niet, als je er over heen gaat dan verdwijnen de afbeeldingen
> en komen ze niet meer terug.
klopt ik kwam er gister ook achter, maar thuis merkte ik dat niet
omdat ik thuis lokaal een webserver heb draaien en in de javascript staat
de absolute_url nog hard gecode.
Weet iemand trouwens hoe je ervoor zorgt dat apache js eerst door de php engine heenhaalt zodat
ik daar gewoon mijn variabele ka ngebruiken zodat ik die maar 1 keer moet defineren?
> In IE6.0 geeft hij kruisjes weer, in Firefox 1.0 geeft hij alleen wat lege
> vakjes...
>
> (Woow! Even totaal off-topic, maar dat Firefox werkt geweldig... :-)) )
Ideaal he.
> --
> Met vriendelijke groet,
>
> Jorick de Lange
>
> mail (at) jorickdelange (dot) nl
> www.jorickdelange.nl
>
>