Bekijk Volledige Versie : Hoe werken nu die nare Globals in PHP (newby Alert !)
Ik ben nog al een poosje aan het stoeien maar ik kom er niet uit ( ook niet
via http://nl3.php.net/globals )
In php.ini heb ik globals op uit staan. How krijg in nu variabelen van het
een naar het andere form zonder een hele array in de titelbalk te plaatsen
of een cookie of session aan te maken ?
Het volgende voorbeeld :
test1.php
--------------------------
$test[1]="Hello PHP";
......
......
.....
$test[12]="Hello Globals";
--------------------------
test2.php
---------------------------
<?php echo($test[12]); ?>
---------------------------
Alvast bedankt
--
Rene
Http://www.EasyFactuur.com
"Rene A" <Rene@EasyFactuur.com> schreef in bericht
news:3eef75a9$0$49112$e4fe514c@news.xs4all.nl...
> Ik ben nog al een poosje aan het stoeien maar ik kom er niet uit ( ook
niet
> via http://nl3.php.net/globals )
> In php.ini heb ik globals op uit staan. How krijg in nu variabelen van het
> een naar het andere form zonder een hele array in de titelbalk te plaatsen
> of een cookie of session aan te maken ?
>
> Het volgende voorbeeld :
>
> test1.php
> --------------------------
> $test[1]="Hello PHP";
> .....
> .....
> ....
> $test[12]="Hello Globals";
> --------------------------
>
>
> test2.php
> ---------------------------
> <?php echo($test[12]); ?>
> ---------------------------
>
> Alvast bedankt
>
print_r($_POST); Variabelen die via een form verstuurt zijn zitten in de
post array :) (dus het veld naam is: $_POST["naam"])
--
Slechte webdesigners? Geef ze hier aan:
http://webdesignert.vectoris.nl/
Daniel Tryba
18/06/03, 00:05
Rene A <Rene@easyfactuur.com> wrote:
> test1.php
> --------------------------
> $test[1]="Hello PHP";
> .....
> .....
> ....
> $test[12]="Hello Globals";
> --------------------------
> test2.php
> ---------------------------
> <?php echo($test[12]); ?>
> ---------------------------
Er is geen enkele relatie tussen test1 en test2. Variabelen die je dan
ook in de scope van test1 declareert zijn niet beschikbaar daarbuiten.
Aangezien de variabele test statisch is is het delen van de variabele
het handigst (en simpelst) te doen via een gezamelijke include file.
--
Daniel Tryba
"Rick" <spammans@chello.nl> schreef in bericht
news:bcntsq$1qja$1@nl-news.euro.net...
>
> print_r($_POST); Variabelen die via een form verstuurt zijn zitten in de
> post array :) (dus het veld naam is: $_POST["naam"])
De $_post gebruik je toch alleen als je variabelen via een invulvform hebt
gepost ?
Volgens mij kun je hier niet een hele array doorsturen die niet uit een
<form> action is verkregen , of zit ik er naast ?
--
Rene
http://www.EasyFactuur.com
"Daniel Tryba" <news_nl.internet.www.server-side@canopus.nl> schreef in
bericht news:bco32v$t5j$1@news.tue.nl...
>
> Er is geen enkele relatie tussen test1 en test2. Variabelen die je dan
> ook in de scope van test1 declareert zijn niet beschikbaar daarbuiten.
>
> Aangezien de variabele test statisch is is het delen van de variabele
> het handigst (en simpelst) te doen via een gezamelijke include file.
In het voorbeeld gaat het ook om constanten , maar het is ook maar een
voorbeeld.
Is het dan dat variablelen uit een include file wel zijn waarde behouden als
je die uit verschillende forms aanroept ?
--
Rene
http://www.EasyFactuur.com
Niels Basjes
18/06/03, 10:35
On Tue, 17 Jun 2003 22:10:05 +0200 the lifeform known as "Rene A"
<Rene@EasyFactuur.com> wrote:
>Ik ben nog al een poosje aan het stoeien maar ik kom er niet uit ( ook niet
>via http://nl3.php.net/globals )
>In php.ini heb ik globals op uit staan. How krijg in nu variabelen van het
>een naar het andere form zonder een hele array in de titelbalk te plaatsen
>of een cookie of session aan te maken ?
Door het form met POST te versturen i.p.v. GET
>Het volgende voorbeeld :
>
>test1.php
>--------------------------
>$test[1]="Hello PHP";
>.....
>.....
>....
>$test[12]="Hello Globals";
>--------------------------
>
>
>test2.php
>---------------------------
><?php echo($test[12]); ?>
>---------------------------
Gezien dit voorbeeld heb ik misschien jouw vraag niet begrepen.
--
Best regards,
Niels.
================================================== =====================
| Drs. ir. Niels Basjes | National Aerospace Laboratory | _ |
| Phone : +31-20-5113381 | Anthony Fokkerweg 2 | / |
| Fax : +31-20-5113210 | 1059 CM Amsterdam |(NLR)|
| E-Mail@NLR : Basjes@NLR,nl | The Netherlands | _/ |
| E-Mail@Home : Niels@Basjes,nl | http://www.nlr.nl | |
================================================== =====================
Spam block : Replace the , with a .
Niels Basjes
18/06/03, 11:05
On Wed, 18 Jun 2003 10:02:44 +0200 the lifeform known as "Rene A"
<Enersoft@xs4all.nl> wrote:
>
>"Daniel Tryba" <news_nl.internet.www.server-side@canopus.nl> schreef in
>bericht news:bco32v$t5j$1@news.tue.nl...
>>
>> Er is geen enkele relatie tussen test1 en test2. Variabelen die je dan
>> ook in de scope van test1 declareert zijn niet beschikbaar daarbuiten.
>>
>> Aangezien de variabele test statisch is is het delen van de variabele
>> het handigst (en simpelst) te doen via een gezamelijke include file.
>
>In het voorbeeld gaat het ook om constanten , maar het is ook maar een
>voorbeeld.
>Is het dan dat variablelen uit een include file wel zijn waarde behouden als
>je die uit verschillende forms aanroept ?
Ah, nu snap ik de vraag:
Je zet in je php script gewoon bovenaan zoiets als:
require_once "GlobalConstants.php";
En dan kun je wat jij wil.
--
Best regards,
Niels.
================================================== =====================
| Drs. ir. Niels Basjes | National Aerospace Laboratory | _ |
| Phone : +31-20-5113381 | Anthony Fokkerweg 2 | / |
| Fax : +31-20-5113210 | 1059 CM Amsterdam |(NLR)|
| E-Mail@NLR : Basjes@NLR,nl | The Netherlands | _/ |
| E-Mail@Home : Niels@Basjes,nl | http://www.nlr.nl | |
================================================== =====================
Spam block : Replace the , with a .
"Niels Basjes" <Basjes@NLR.nl> schreef in bericht
news:3ef9298c.171087550@news...
> Ah, nu snap ik de vraag:
>
> Je zet in je php script gewoon bovenaan zoiets als:
>
> require_once "GlobalConstants.php";
>
> En dan kun je wat jij wil.
Ik begrijp dat er wat verwaring is over mn vraag, ik zal het met een
andervoorbeeld proberen aan te geven :
<form action="<?php print("$PHP_SELF"); ?>" method="post">
<button type="submit">zomaar een knop</button>
</form>
<?php
$teller=$teller+1;
echo($teller);
?>
Als ik deze code uitvoer , blijft $teller op 1 staan, hij behoud dus niet
zijn oude waarde als ik middels de knop het form opnieuw laad.
ps. ik wil het niet via de GET methode zodat de variabelen achter de url
komt te staan.
In iedergeval al reuze bedankt voor het ondekken wat ik nu eigelijk vraag
;-)
--
Rene
http://www.EasyFactuur.com
Rene
Daniel Tryba
18/06/03, 13:05
Rene A <Enersoft@xs4all.nl> wrote:
> Ik begrijp dat er wat verwaring is over mn vraag, ik zal het met een
> andervoorbeeld proberen aan te geven :
>
> <form action="<?php print("$PHP_SELF"); ?>" method="post">
> <button type="submit">zomaar een knop</button>
> </form>
>
> <?php
> $teller=$teller+1;
> echo($teller);
> ?>
>
> Als ik deze code uitvoer , blijft $teller op 1 staan, hij behoud dus niet
> zijn oude waarde als ik middels de knop het form opnieuw laad.
Het is nog steeds niet duidelijk wat $teller nu is. Is dit per gebruiker
(sessie dus) of voor deze pagina of voor de hele applicatie.
PHP heeft geen page en application scope alleen een sessionscope, je
zult dus de waarde buiten php moeten bewaren indien je geen gebruik
maakt van sessies (bv een tekstfile of database).
> ps. ik wil het niet via de GET methode zodat de variabelen achter de url
> komt te staan.
Dus per gebruiker? POST?
--
Daniel Tryba
"Rene A" <Enersoft@xs4all.nl> schreef in bericht
news:3ef0369c$0$49117$e4fe514c@news.xs4all.nl...
>
> "Niels Basjes" <Basjes@NLR.nl> schreef in bericht
> news:3ef9298c.171087550@news...
> > Ah, nu snap ik de vraag:
> >
> > Je zet in je php script gewoon bovenaan zoiets als:
> >
> > require_once "GlobalConstants.php";
> >
> > En dan kun je wat jij wil.
>
>
> Ik begrijp dat er wat verwaring is over mn vraag, ik zal het met een
> andervoorbeeld proberen aan te geven :
>
> <form action="<?php print("$PHP_SELF"); ?>" method="post">
> <button type="submit">zomaar een knop</button>
> </form>
>
Owja met die globals is het nu $_SERVER["PHP_SELF"]
--
Slechte webdesigners? Geef ze hier aan:
http://webdesignert.vectoris.nl/
"Rene A" <Enersoft@xs4all.nl> schreef in bericht
news:3ef01be1$0$49110$e4fe514c@news.xs4all.nl...
>
> "Rick" <spammans@chello.nl> schreef in bericht
> news:bcntsq$1qja$1@nl-news.euro.net...
> >
> > print_r($_POST); Variabelen die via een form verstuurt zijn zitten in de
> > post array :) (dus het veld naam is: $_POST["naam"])
>
>
> De $_post gebruik je toch alleen als je variabelen via een invulvform hebt
> gepost ?
> Volgens mij kun je hier niet een hele array doorsturen die niet uit een
> <form> action is verkregen , of zit ik er naast ?
>
$_POST is zelf een array :) Dus in $_POST staan alleen die vars die
doorgestuurd zijn via het form.
--
Slechte webdesigners? Geef ze hier aan:
http://webdesignert.vectoris.nl/
Niels Basjes
19/06/03, 00:05
The life form known as "Rene A" <Enersoft@xs4all.nl> wrote:
>Ik begrijp dat er wat verwaring is over mn vraag, ik zal het met een
>andervoorbeeld proberen aan te geven :
>
><form action="<?php print("$PHP_SELF"); ?>" method="post">
> <button type="submit">zomaar een knop</button>
></form>
>
><?php
> $teller=$teller+1;
> echo($teller);
>?>
>
>Als ik deze code uitvoer , blijft $teller op 1 staan, hij behoud dus niet
>zijn oude waarde als ik middels de knop het form opnieuw laad.
Je initialiseert $teller nergens, dus is hij ongedefinieerd (dat is een
fout) en wordt er aangenomen dat $teller=0
Zet voor de lol eens deze regel boven aan je script:
<?php error_reporting(E_ALL); ?>
Pas als je nu geen enkele melding meer krijgt bestaat de mogelijkheid dat
je PHP code doet wat je wil. Krijg je wel meldingen dan het je per
definitie een probleem. Als je foutmeldingen wil afhandelen gebruik dan de
@ operator voor een functie.
>ps. ik wil het niet via de GET methode zodat de variabelen achter de url
>komt te staan.
>
>In iedergeval al reuze bedankt voor het ondekken wat ik nu eigelijk vraag
>;-)
Een PHP script begint compleet leeg als je het start. Alleen de variabelen
die expliciet worden doorgegeven (m.n. GET en POST) hebben een begin waarde
aan het begin van je script. Behalve wat constanten en systeem, variabelen
is verder al het andere ongedefinieerd.
Je moet dus:
1) Alles initialiseren voor je het gebruikt.
2) Alles wat je wil hergebruiken expliciet doorgeven.
Probeer dit eens (Uit mijn hoofd, niet getest):
<?php
if (!isset($teller))
$teller=0;
?>
<form action="<?php print("$PHP_SELF"); ?>" method="post">
<input type="hidden" name=teller value="<?php echo $teller; ?>">
<button type="submit">zomaar een knop</button>
</form>
<?php
$teller=$teller+1;
echo($teller);
?>
--
Niels.
Drs. ir. Niels Basjes - http://niels.basjes.nl - VCV 20000302
mailto:`echo 'Niels Basjes'|awk '{print$1"@"$2".nl"}'`
Hans Wolters
19/06/03, 00:20
On Wed, 18 Jun 2003 23:59:58 +0200, Niels Basjes <Niels_Basjes_Doesnt@want.email.nl> wrote:
>> $teller=$teller+1;
>>Als ik deze code uitvoer , blijft $teller op 1 staan, hij behoud dus niet
>>zijn oude waarde als ik middels de knop het form opnieuw laad.
>
> Je initialiseert $teller nergens, dus is hij ongedefinieerd (dat is een
> fout) en wordt er aangenomen dat $teller=0
>
> Zet voor de lol eens deze regel boven aan je script:
><?php error_reporting(E_ALL); ?>
Tot dusver ok :-)
>
> Pas als je nu geen enkele melding meer krijgt bestaat de mogelijkheid dat
> je PHP code doet wat je wil. Krijg je wel meldingen dan het je per
> definitie een probleem. Als je foutmeldingen wil afhandelen gebruik dan de
> @ operator voor een functie.
Als je nu op irc zou zitten kreeg je een !lart niels van me :-]
Hans ( waar is if(! toch gebleven )
--
pas op, nomailwanted is een spamtrap.
http://spamikaze.nl.linux.org
"Niels Basjes" <Niels_Basjes_Doesnt@want.email.nl> schreef in bericht
news:fkn1fvk7q64kq6c435g5b464jl14l64kjt@4ax.com...
> The life form known as "Rene A" <Enersoft@xs4all.nl> wrote:
>
> >Ik begrijp dat er wat verwaring is over mn vraag, ik zal het met een
> >andervoorbeeld proberen aan te geven :
> >
> ><form action="<?php print("$PHP_SELF"); ?>" method="post">
> > <button type="submit">zomaar een knop</button>
> ></form>
> >
> ><?php
> > $teller=$teller+1;
> > echo($teller);
> >?>
> >
> >Als ik deze code uitvoer , blijft $teller op 1 staan, hij behoud dus niet
> >zijn oude waarde als ik middels de knop het form opnieuw laad.
>
> Je initialiseert $teller nergens, dus is hij ongedefinieerd (dat is een
> fout) en wordt er aangenomen dat $teller=0
>
> Zet voor de lol eens deze regel boven aan je script:
> <?php error_reporting(E_ALL); ?>
>
> Pas als je nu geen enkele melding meer krijgt bestaat de mogelijkheid dat
> je PHP code doet wat je wil. Krijg je wel meldingen dan het je per
> definitie een probleem.
Niet zozeer als het slechts notices betreft :)
> Als je foutmeldingen wil afhandelen gebruik dan de
> @ operator voor een functie.
Dit heet foutmeldingen onderdrukken niet zozeer afhandelen en zeker niet
oplossen. Als je een foutmelding krijgt dan zal je hem normaal gesproken
willen oplossen voor een goedwerkend script en niet willen onderdrukken.
--
Slechte webdesigners? Geef ze hier aan:
http://webdesignert.vectoris.nl/
"Niels Basjes" <Niels_Basjes_Doesnt@want.email.nl> schreef in bericht
news:fkn1fvk7q64kq6c435g5b464jl14l64kjt@4ax.com...
> Een PHP script begint compleet leeg als je het start. Alleen de variabelen
> die expliciet worden doorgegeven (m.n. GET en POST) hebben een begin
waarde
> aan het begin van je script. Behalve wat constanten en systeem, variabelen
> is verder al het andere ongedefinieerd.
> Je moet dus:
> 1) Alles initialiseren voor je het gebruikt.
> 2) Alles wat je wil hergebruiken expliciet doorgeven.
>
> Probeer dit eens (Uit mijn hoofd, niet getest):
>
Ok, hartelijk dank , het begint me nu een beetje duidelijk te worden als ik
dus een hele array wil doorgeven kan ik dat het beste met een session doen.
En gaat het om een paar variabelen dan met een post.
--
Rene
http://www.EasyFactuur.com
Niels Basjes
19/06/03, 09:50
On Wed, 18 Jun 2003 22:20:01 +0000 (UTC) the lifeform known as Hans
Wolters <nomailwanted@spamikaze.is-a-geek.org> wrote:
>>> $teller=$teller+1;
>
>>>Als ik deze code uitvoer , blijft $teller op 1 staan, hij behoud dus niet
>>>zijn oude waarde als ik middels de knop het form opnieuw laad.
>>
>> Je initialiseert $teller nergens, dus is hij ongedefinieerd (dat is een
>> fout) en wordt er aangenomen dat $teller=0
>>
>> Zet voor de lol eens deze regel boven aan je script:
>><?php error_reporting(E_ALL); ?>
>
>Tot dusver ok :-)
:-)
>> Pas als je nu geen enkele melding meer krijgt bestaat de mogelijkheid dat
>> je PHP code doet wat je wil. Krijg je wel meldingen dan het je per
>> definitie een probleem. Als je foutmeldingen wil afhandelen gebruik dan de
>> @ operator voor een functie.
>Als je nu op irc zou zitten kreeg je een !lart niels van me :-]
Sorry. Ik bedoelde (maar beschreef dat niet duidelijk) dat je die @
alleen gebruikt om b.v. de eigenhandige foutmeldingen van een systeem
functie zoals mysql_connect te onderdrukken, om vervolgens bij geen
database verbinding op een nette manier een melding naar de HTML te
schrijven.
>Hans ( waar is if(! toch gebleven )
Lost in space ?
--
Best regards,
Niels.
================================================== =====================
| Drs. ir. Niels Basjes | National Aerospace Laboratory | _ |
| Phone : +31-20-5113381 | Anthony Fokkerweg 2 | / |
| Fax : +31-20-5113210 | 1059 CM Amsterdam |(NLR)|
| E-Mail@NLR : Basjes@NLR,nl | The Netherlands | _/ |
| E-Mail@Home : Niels@Basjes,nl | http://www.nlr.nl | |
================================================== =====================
Spam block : Replace the , with a .
Niels Basjes
19/06/03, 09:50
On Thu, 19 Jun 2003 07:33:46 +0200 the lifeform known as "Rick"
<spammans@chello.nl> wrote:
>> Zet voor de lol eens deze regel boven aan je script:
>> <?php error_reporting(E_ALL); ?>
>>
>> Pas als je nu geen enkele melding meer krijgt bestaat de mogelijkheid dat
>> je PHP code doet wat je wil. Krijg je wel meldingen dan het je per
>> definitie een probleem.
>
>Niet zozeer als het slechts notices betreft :)
Ik ben heel strak daarin. Ik ben het daarom niet met je eens.
>> Als je foutmeldingen wil afhandelen gebruik dan de
>> @ operator voor een functie.
>
>Dit heet foutmeldingen onderdrukken niet zozeer afhandelen en zeker niet
>oplossen. Als je een foutmelding krijgt dan zal je hem normaal gesproken
>willen oplossen voor een goedwerkend script en niet willen onderdrukken.
Mee eens. Ik bedoelde (maar beschreef dat niet duidelijk) dat je die @
alleen gebruikt om b.v. de eigenhandige foutmeldingen van een systeem
functie zoals mysql_connect te onderdrukken, om vervolgens bij geen
database verbinding op een nette manier een melding naar de HTML te
schrijven.
--
Best regards,
Niels.
================================================== =====================
| Drs. ir. Niels Basjes | National Aerospace Laboratory | _ |
| Phone : +31-20-5113381 | Anthony Fokkerweg 2 | / |
| Fax : +31-20-5113210 | 1059 CM Amsterdam |(NLR)|
| E-Mail@NLR : Basjes@NLR,nl | The Netherlands | _/ |
| E-Mail@Home : Niels@Basjes,nl | http://www.nlr.nl | |
================================================== =====================
Spam block : Replace the , with a .
Hans Wolters
19/06/03, 11:35
On Thu, 19 Jun 2003 07:47:57 GMT, Niels Basjes <Basjes@NLR.nl> wrote:
> On Wed, 18 Jun 2003 22:20:01 +0000 (UTC) the lifeform known as Hans
> Wolters <nomailwanted@spamikaze.is-a-geek.org> wrote:
>
>>> Pas als je nu geen enkele melding meer krijgt bestaat de mogelijkheid dat
>>> je PHP code doet wat je wil. Krijg je wel meldingen dan het je per
>>> definitie een probleem. Als je foutmeldingen wil afhandelen gebruik dan de
>>> @ operator voor een functie.
>
>>Als je nu op irc zou zitten kreeg je een !lart niels van me :-]
>
> Sorry. Ik bedoelde (maar beschreef dat niet duidelijk) dat je die @
> alleen gebruikt om b.v. de eigenhandige foutmeldingen van een systeem
> functie zoals mysql_connect te onderdrukken, om vervolgens bij geen
> database verbinding op een nette manier een melding naar de HTML te
> schrijven.
>
>>Hans ( waar is if(! toch gebleven )
>
> Lost in space ?
Nee hoor, in mijn basis classes :-)
Hans
--
pas op, nomailwanted is een spamtrap.
http://spamikaze.nl.linux.org
Niels Basjes
20/06/03, 10:20
On Thu, 19 Jun 2003 09:42:13 +0200 the lifeform known as "Rene A"
<Enersoft@xs4all.nl> wrote:
>
>"Niels Basjes" <Niels_Basjes_Doesnt@want.email.nl> schreef in bericht
>news:fkn1fvk7q64kq6c435g5b464jl14l64kjt@4ax.com...
>> Een PHP script begint compleet leeg als je het start. Alleen de variabelen
>> die expliciet worden doorgegeven (m.n. GET en POST) hebben een begin
>waarde
>> aan het begin van je script. Behalve wat constanten en systeem, variabelen
>> is verder al het andere ongedefinieerd.
>> Je moet dus:
>> 1) Alles initialiseren voor je het gebruikt.
>> 2) Alles wat je wil hergebruiken expliciet doorgeven.
>>
>> Probeer dit eens (Uit mijn hoofd, niet getest):
>>
>
>
>Ok, hartelijk dank , het begint me nu een beetje duidelijk te worden als ik
>dus een hele array wil doorgeven kan ik dat het beste met een session doen.
Dat kan (is ook makkelijker) maar dat hoeft niet. Je kan ook een array
via GET/POST door geven. Probeer deze velden maar eens in een form en
aan de ontvangende kant heb je in PHP een array met de naam $blabla.
<input type="hidden" name="blabla[]" value="1">
<input type="hidden" name="blabla[]" value="2">
<input type="hidden" name="blabla[aap]" value="1">
<input type="hidden" name="blabla[noot]" value="2">
<input type="hidden" name="blabla[mies][foo]" value="3">
<input type="hidden" name="blabla[mies][bar]" value="4">
>En gaat het om een paar variabelen dan met een post.
--
Best regards,
Niels.
================================================== =====================
| Drs. ir. Niels Basjes | National Aerospace Laboratory | _ |
| Phone : +31-20-5113381 | Anthony Fokkerweg 2 | / |
| Fax : +31-20-5113210 | 1059 CM Amsterdam |(NLR)|
| E-Mail@NLR : Basjes@NLR,nl | The Netherlands | _/ |
| E-Mail@Home : Niels@Basjes,nl | http://www.nlr.nl | |
================================================== =====================
Spam block : Replace the , with a .