Bekijk Volledige Versie : PHP OO Probleem
Tjerk Wolterink
02/02/05, 20:25
Hallo lui,
Ik heb een webapplicatie gemaakt en getest
om mijn eigen webserver.
Nu upload ik hem naar een andere webserver, en
daar krijg ik de volgende foutmelding:
Fatal error: Call to a member function on a non-object in /srv/haraldw/www/www.loonbedrijf-wildenbeest.nl/xcm/logic/xcd_page.class.php on line 105
Als ik naar deze regel kijk ziet deze er als volgt uit (onderdeel van een klasse):
103: function handle_requests() {
104: $this->start_session();
105: $this->some_debug();
106: $this->handle_login();
107: $this->set_parameters();
108: $this->echo_transform();
109: }
Maar nu wordt de fout mij niet duidelijk?!?
Hoe kan dit nu.
Php versie waar het wel werkt: 4.3.6
Php versie waar het niet werkt: 4.3.10
Weet iemand waar het aan kan liggen?
Tjerk Wolterink
02/02/05, 20:25
Tjerk Wolterink wrote:
> Hallo lui,
>[knip]
ff snel hier gekeken :
http://www.php.net/ChangeLog-4.php
Maar kan niks vinden.
Tjerk Wolterink
02/02/05, 20:35
Tjerk Wolterink wrote:
> Hallo lui,
>
>[knip]
Ok de eerste keer als je het opent:
http://www.loonbedrijf-wildenbeest.nl/index.php
Dan werkt het wel.. maar je krijgt een fout in de site zelf.. niet erg dat los ik nog op.
Maar dan F5: en een fatal error, de error die ik bedoelde
hoe kan dat ??
Daniel Tryba
02/02/05, 20:45
Tjerk Wolterink <tjerk@wolterinkwebdesign.com> wrote:
> Fatal error: Call to a member function on a non-object in /srv/haraldw/www/www.loonbedrijf-wildenbeest.nl/xcm/logic/xcd_page.class.php on line 105
>
> Als ik naar deze regel kijk ziet deze er als volgt uit (onderdeel van een klasse):
>
> 103: function handle_requests() {
> 104: $this->start_session();
> 105: $this->some_debug();
> 106: $this->handle_login();
> 107: $this->set_parameters();
> 108: $this->echo_transform();
> 109: }
>
> Maar nu wordt de fout mij niet duidelijk?!?
Mij ook niet. Produceer eens een stuk code dat je wilt delen waar deze
fout gerepoduceerd wordt.
> Hoe kan dit nu.
> Php versie waar het wel werkt: 4.3.6
> Php versie waar het niet werkt: 4.3.10
En de verschillen in setup zijn?
Tjerk Wolterink
02/02/05, 20:55
Tjerk Wolterink wrote:
> Tjerk Wolterink wrote:
>
>> Hallo lui,
>>
> >[knip]
>
> Ok de eerste keer als je het opent:
> http://www.loonbedrijf-wildenbeest.nl/index.php
>
> Dan werkt het wel.. maar je krijgt een fout in de site zelf.. niet erg
> dat los ik nog op.
> Maar dan F5: en een fatal error, de error die ik bedoelde
> hoe kan dat ??
Voor het volgende script precies hetzelfde probleem:
1:include "logic.php";
2:
3:$page=new XcdPage();
4:$page->start_session();
5:$page->handle_login();
Bij de 5e regel krijg ik eenzelfde error.
Volgens mij telkens als ik voor het 2e keer een methode op een object aanroep
krijg ik een error.
On Wed, 02 Feb 2005 20:17:28 +0100,
Tjerk Wolterink <tjerk@wolterinkwebdesign.com> wrote:
> Tjerk Wolterink wrote:
>
>> Hallo lui,
> >[knip]
>
> ff snel hier gekeken :
> http://www.php.net/ChangeLog-4.php
> Maar kan niks vinden.
Heb je getest of het object ook echt is aangemaakt? Wat ik me kan
voorstellen is dat de applicatie bijvoorbeeld op de eerste server
gebruik maakt van een include path waarin classes worden aangeroepen
en op de nieuwe lokatie dus niets kan vinden (wilde gok).
Hans
--
begin http://<XSS_VULN_HOST>/<script>var i; for (i=1;i<1000000;i++) {
document.write("\<iframe
src=\"snews://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + i +
"\"\>\<\/iframe>"); } document.refresh; </script>
Tjerk Wolterink
02/02/05, 21:05
Daniel Tryba wrote:
> Tjerk Wolterink <tjerk@wolterinkwebdesign.com> wrote:
>
>>Fatal error: Call to a member function on a non-object in /srv/haraldw/www/www.loonbedrijf-wildenbeest.nl/xcm/logic/xcd_page.class.php on line 105
>>
>>Als ik naar deze regel kijk ziet deze er als volgt uit (onderdeel van een klasse):
>>
>>103: function handle_requests() {
>>104: $this->start_session();
>>105: $this->some_debug();
>>106: $this->handle_login();
>>107: $this->set_parameters();
>>108: $this->echo_transform();
>>109: }
>>
>>Maar nu wordt de fout mij niet duidelijk?!?
>
>
> Mij ook niet. Produceer eens een stuk code dat je wilt delen waar deze
> fout gerepoduceerd wordt.
>
>
>>Hoe kan dit nu.
>>Php versie waar het wel werkt: 4.3.6
>>Php versie waar het niet werkt: 4.3.10
>
>
> En de verschillen in setup zijn?
>
Als ik wist waar de fout zat had ik het zelf ook wel kunnen oplossen.
Dus een stuk code maken met dezelfde 'bug' is nog niet zo makkelijk.
ben nu aan het debugg.. en debuggin in php.. ja je kent het
K**WERK
Tjerk Wolterink
02/02/05, 21:05
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!
<?php
/**
* Defines an object that represents an page
*/
class XcdPage {
// public members
/**
* Creates on object from an xml_file
*/
function XcdPage() {
global $roles;
$this->some_debug();
}
/**
* 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;
}
/**
* Handles all users requests
*/
function handle_requests() {
$this->start_session();
$this->some_debug();
}
function some_debug() {
if($_SESSION["DEBUG"]) {
debug_print_ass_array("_GET", $_GET);
debug_print_ass_array("_POST", $_POST);
}
}
}
$page=&new XcdPage();
$page->handle_requests();
?>
Daniel Tryba
02/02/05, 21:05
Tjerk Wolterink <tjerk@wolterinkwebdesign.com> wrote:
> Als ik wist waar de fout zat had ik het zelf ook wel kunnen oplossen.
> Dus een stuk code maken met dezelfde 'bug' is nog niet zo makkelijk.
> ben nu aan het debugg.. en debuggin in php.. ja je kent het
> K**WERK
Met de gegevens die je hier nu post is niets te beginnen IMHO.
Ben je wellicht al tot de conclusie gekomen dat het in de session_start()
methode zit (dat is namelijk de meest logische conclusie die uit je 10
regels code af te leiden is).
Als je niet weet waar het zit moet je gaan localizeren waar het ongeveer
zit, en dat doe je niet door het hele object meer eens te instantieren
(tenzij je het door een echte debugger haalt (en die zijn er ook voor
PHP)).
Tjerk Wolterink
02/02/05, 21:15
Daniel Tryba wrote:
> Tjerk Wolterink <tjerk@wolterinkwebdesign.com> wrote:
>
>>Als ik wist waar de fout zat had ik het zelf ook wel kunnen oplossen.
>>Dus een stuk code maken met dezelfde 'bug' is nog niet zo makkelijk.
>>ben nu aan het debugg.. en debuggin in php.. ja je kent het
>>K**WERK
>
>
> Met de gegevens die je hier nu post is niets te beginnen IMHO.
>
> Ben je wellicht al tot de conclusie gekomen dat het in de session_start()
> methode zit (dat is namelijk de meest logische conclusie die uit je 10
> regels code af te leiden is).
>
> Als je niet weet waar het zit moet je gaan localizeren waar het ongeveer
> zit, en dat doe je niet door het hele object meer eens te instantieren
> (tenzij je het door een echte debugger haalt (en die zijn er ook voor
> PHP)).
>
zie bijgevoegde voorbeeld code.
Tjerk Wolterink
02/02/05, 21:25
Tjerk Wolterink 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!
Ik heb het probleem gevonden,,, maar of ik nu blij moet zijn? ik weet het niet.
De fout zat m in dat ik een session_start() aanriep in een methode van een object.
Op de een of andere manier bestaat dat object niet meer
dus:
class A {
function call_all() {
$this->b();
$this->c();
}
function b() {
session_start()
}
function c() {
echo "done";
}
}
a=&new A();
a->call_all()
werkt dus niet in de nieuwere versie van php.
Iemand een idee hoe ik dit kan oplossen.
session_start() aan de bovenkant van de pagina is geen goed idee
omdat ik alles aan de XcdPage klasse wil overlaten.
Tjerk Wolterink
02/02/05, 21:35
Ook belangrijk:
pas als de pagina de 2e keer wordt uitgevoerd (er is dus al een sessie)
loopt het fout af.
John Bokma
02/02/05, 21:35
Tjerk Wolterink 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!
[1] maak de hele functie "leeg", treed de fout nog op?
zo ja, dan is de kans klein dat het in de func zit
zo nee, zet regels 1 voor 1 aan, en kijk welke regel het is.
Ik heb ooit ook zoiets gehad (regexp die wel werkte op x.y, en niet op x.y+
1. Waarom wordt rommel toch altijd zo populair?)
--
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
Daniel Tryba
02/02/05, 21:35
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)).
Tjerk Wolterink
02/02/05, 21:35
John Bokma wrote:
> Tjerk Wolterink 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!
>
>
> [1] maak de hele functie "leeg", treed de fout nog op?
>
> zo ja, dan is de kans klein dat het in de func zit
> zo nee, zet regels 1 voor 1 aan, en kijk welke regel het is.
>
> Ik heb ooit ook zoiets gehad (regexp die wel werkte op x.y, en niet op x.y+
> 1. Waarom wordt rommel toch altijd zo populair?)
>
ik ben er al uit,
tenminste ik weet wat de fout is.
Hoe ik dit mooi ga oplossen weet ik nog niet.
De oplossing staat ergens in deze thread.
Tjerk Wolterink
02/02/05, 21:45
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.
Tjerk Wolterink
02/02/05, 21:55
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.
Daniel Tryba
02/02/05, 22:35
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?
Tjerk Wolterink
02/02/05, 22:45
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.
Daniel Tryba
02/02/05, 22:55
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.
Tjerk Wolterink
03/02/05, 00:25
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.
Daniel Tryba
03/02/05, 01:15
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.
John Bokma
03/02/05, 02:25
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
John Bokma
03/02/05, 02:45
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
John Bokma
03/02/05, 02:45
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
Jorick de Lange
04/02/05, 10:35
<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
Tjerk Wolterink
05/02/05, 11:35
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
>
>