[PHP] Global variables?

Pagina: 1
Acties:

Onderwerpen


  • 3V3RT
  • Registratie: Januari 2004
  • Laatst online: 16-08 22:30
Ik ben op zoek naar een manier om variabele op te slaan in php zelf om die in meerdere scripts aan te roepen. Simpel voorbeeldje (zoals ik denk dat het zou moeten):

script1.php:
PHP:
1
2
3
<?
$_ENV["variabele"] = "Blaat";
?>


script2.php (hier zou je hem dan moeten aanroepen)
PHP:
1
2
3
4
5
<?
echo $variabele;
//of (weet niet of het uitmaakt):
echo $_ENV["variabele"];
?>


Hopelijk snappen jullie een beetje mijn doel. Ik kan natuurlijk ook de variabele opslaan in een DB, maar in dit geval gaat het maar om 1 var. Variabele schrijven naar een php kan natuurlijk ook, maar wou weten of dit ook zou kunnen. Naar mijn bevindingen zijn alle $_ENV en $_SERVER vars gelocked, dus dat is waarschijnlijk geen optie.

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Je kan die variabele toch opslaan in een sessie variabele?

  • kalechinees
  • Registratie: Mei 2005
  • Laatst online: 21-04 15:02
wat ik uit je verhaal haal ben je op zoek naar een sessie variabele :)
http://www.php.net/session

[ Voor 0% gewijzigd door kalechinees op 23-02-2006 22:04 . Reden: shit net te laat :) achja, vbscript/asp peepz zijn altijd langzamer heb ik gehoord ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Sessie, cookie, POST parameter, GET parameter, leef je uit.

{signature}


  • Andre-85
  • Registratie: April 2003
  • Niet online

Andre-85

Sid

Dat gaat op deze manier niet werken. Variabelen bestaan zolang het script runt en alleen voor dat script. Met serialize kan je een var opslaan in een bestand en later in je andere script weer binnen halen.

Btw waar wil je het precies voor gebruiken?

Lorem
Whenever we feel the need to comment something, we write a method instead. - Martin Fowler
People who think they know everything really annoy those of us who know we don't - Bjarne Stroustrup


  • 3V3RT
  • Registratie: Januari 2004
  • Laatst online: 16-08 22:30
Nou ik heb nu een avatar script, waar dus iedereen een avatar kan instellen (lekker origineel :P) . Voorheen sloeg ik de var altijd op in een php file als :
PHP:
1
2
3
<?
$var = 1;
?>


en dan gewoon includen. Maar wou weten of het dus ook anders kon.

  • 3V3RT
  • Registratie: Januari 2004
  • Laatst online: 16-08 22:30
@Andre-85 : ik wil dus geen gebruik maken van bestanden of databases (wat bij serialize wel gebruikt wordt geloof ik). Het moet echt een puur een variabele zijn die overal aan te roepen is. Misschien kan dat wel helemaal niet....

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

Als het mag verschillen per client kan je sessies of cookies gebruiken, anders zal je toch echt aan de bestanden / databases moeten afaik. Daar worden die dingen dan ook voor gemaakt ;) .

DM!


  • 3V3RT
  • Registratie: Januari 2004
  • Laatst online: 16-08 22:30
het mag niet verschillen per client . Sessies en cookies kunnen dus niet gebruikt worden. Jammer. hoopte dat het eigenlijk wel kon :)

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

Eh, ik heb me net niet goed uitgedrukt :) . Het kan natuurlijk best hetzelfde zijn per client, alleen kan je er niet op vertrouwen dat het a) hetzelfde blijft, b) blijft bestaan, c) überhaupt aankomt.

DM!


  • 3V3RT
  • Registratie: Januari 2004
  • Laatst online: 16-08 22:30
nou dat kan je dan toch controleren door mijn voorbeeld uit de startpost?. eerst het 1e script aanroepen, dan het 2e script aanroepen, dat zou dan moeten werken right?.

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

Ja, maar gebruikers kunnen hun cookies weggooien, cookies weigeren, cookies veranderen, en je op andere manier dwarszitten :) .

DM!


  • 3V3RT
  • Registratie: Januari 2004
  • Laatst online: 16-08 22:30
idd, nou dan houd het op. Dan write ik wel gewoon weg in een bestandje B)

Acties:
  • 0 Henk 'm!

  • monnick
  • Registratie: December 2005
  • Niet online
waarom niet gewoon met $_GET ?

Acties:
  • 0 Henk 'm!

  • sQuarecoW
  • Registratie: Juli 2003
  • Laatst online: 19-09 18:07
euhm..

je kan je variabelen toch gewoon global aanroepen?

PHP:
1
2
3
4
5
6
7
8
$blaat = 'veel blaat';

function blaat_maar_een_end_weg() {

   global $blaat;

   echo $blaat;
}

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
monnick: een andere user kan niet op magische wijze die GET parameter weten en meegeven.
sQuarecoW: daar heb je nies aan als bij de volgende keer dat het script draait.

{signature}


Acties:
  • 0 Henk 'm!

Verwijderd

3V3RT schreef op donderdag 23 februari 2006 @ 22:16:
@Andre-85 : ik wil dus geen gebruik maken van bestanden of databases (wat bij serialize wel gebruikt wordt geloof ik). Het moet echt een puur een variabele zijn die overal aan te roepen is. Misschien kan dat wel helemaal niet....
Het kan wel.
Maar dan ga ik er vanuit dat je je scripts lokaal host en dat je de mogelijkheid hebt om apache te configureren. Je kunt er dan namelijk voor zorgen dat er een include plaatsvindt in élk script dat je draait op die server.
Ik heb eens hetzelfde gehad (om precies te zijn, 2 jaar - 1 dag geleden ;-), alleen dan niet met variabelen maar met een lokaal aan te roepen functie. Dit is gelukt en daar maak ik vandaag de dag nog steeds gebruik van (van zogenaamde eigengeschreven development-functies). Dit kun je ook vervangen of uitbreiden met variabelen.

Zie: [rml]ivy in "[ php/webserver] eigen globale functies"[/rml]

Ik kan door die oplossing gebruik maken van functies die in een script staan - en dat script wordt bij elke lokale pagina automagisch ge-include.

[ Voor 39% gewijzigd door Verwijderd op 24-02-2006 11:02 ]


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Maar voor variabelen moet je dan nog steeds een file wegschrijven? Hiermee verander je toch alleen maar de wijze van includen en doe je niets aan de requirement van file I/O?

Voor functies geloof ik wel dat het heel handig kan zijn overigens. ;)

{signature}


Acties:
  • 0 Henk 'm!

  • monnick
  • Registratie: December 2005
  • Niet online
sQuarecoW schreef op vrijdag 24 februari 2006 @ 00:24:
euhm..

je kan je variabelen toch gewoon global aanroepen?

PHP:
1
2
3
4
5
6
7
8
$blaat = 'veel blaat';

function blaat_maar_een_end_weg() {

   global $blaat;

   echo $blaat;
}
is global niet alleen een variabele die te gebruiken is buiten de functie? dus niet buiten het script waar de global in gedefinieerd word? :?

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Dat zei ik dan dus ook in de post direct onder degene die je quote.

{signature}


Acties:
  • 0 Henk 'm!

  • 3V3RT
  • Registratie: Januari 2004
  • Laatst online: 16-08 22:30
@ivy : Dat is inderdaad een manier, maar dan houd je toch nog dat je steeds dat je dat bestand moet overschrijven. De variabele moet namelijk veranderen. Dan kom je dus weer terug op mijn begingedachte. Conclusie : Het is niet mogelijk om variabelen in bijv. het geheugen van php op te slaan... . We blijven vastgeklampt aan bestanden en databases...

Acties:
  • 0 Henk 'm!

Verwijderd

3V3RT schreef op vrijdag 24 februari 2006 @ 12:48:
@ivy : Dat is inderdaad een manier, maar dan houd je toch nog dat je steeds dat je dat bestand moet overschrijven. De variabele moet namelijk veranderen. Dan kom je dus weer terug op mijn begingedachte. Conclusie : Het is niet mogelijk om variabelen in bijv. het geheugen van php op te slaan... . We blijven vastgeklampt aan bestanden en databases...
Je moet data áltijd opslaan in een (bestanden-)database. Dat is niet meer dan logisch, toch? Zelfs PHP en MySQL zijn uiteindelijk maar een set bestanden, waarbij bestanden niets anders zijn dan 0-en en 1-en die opgeslagen zijn op je harde schijf in een bepaalde volgorde en waarbij die volgorde opgeslagen is in de FAT van je harde schijf.

Hoe wil je de data - op computers :Y) - anders opslaan (niet beginnen over tapes a.u.b.)?

Ik vindt de uitspraak `we blijven vastgeklampt aan bestanden en databases` hetzelfde overkomen als de uitspraak `als we willen voetballen zullen we dus altijd een bal nodig hebben`. Tja, vrij logisch ;)

[ Voor 4% gewijzigd door Verwijderd op 24-02-2006 13:08 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

3V3RT schreef op vrijdag 24 februari 2006 @ 12:48:
@ivy : Dat is inderdaad een manier, maar dan houd je toch nog dat je steeds dat je dat bestand moet overschrijven. De variabele moet namelijk veranderen. Dan kom je dus weer terug op mijn begingedachte. Conclusie : Het is niet mogelijk om variabelen in bijv. het geheugen van php op te slaan... . We blijven vastgeklampt aan bestanden en databases...
shared memory?

shm_attach()
shm_detach()
shm_get_var()
shm_put_var()
shm_remove_var()
shm_remove()

Acties:
  • 0 Henk 'm!

  • 3V3RT
  • Registratie: Januari 2004
  • Laatst online: 16-08 22:30
Dat zou nog wel eens kunnen werken. Ik ben het nu aan het uit proberen..

Acties:
  • 0 Henk 'm!

  • 3V3RT
  • Registratie: Januari 2004
  • Laatst online: 16-08 22:30
Goed, ik heb aardig wat dingen geprobeerd maar kom steeds op dezelfde error uit : Warning: X is not a SysV shared memory index in /var/www/evert/av/script2.php on line 4, waar X een een cijfer is.

script1.php :
PHP:
1
2
3
4
5
6
<?
$shm_id = shm_attach(2132, 10000, 0600);
$varkey = 3;
$value = "blaat";
shm_put_var($shm_id, $varkey, $value);
?>

In mijn geval is $shm_id de waarde 2. (wie kan mij uitleggen waarom?, ook als ik de keys verander blijft dat hetzelfde)

script2.php (uitlezen):
PHP:
1
2
3
4
5
6
<?
$varkey = 3;
$shm_id = 2;
$waarde = shm_get_var($shm_id, $varkey); 
echo $waarde;  
?>


Ik weet 100% zeker dat de waarde goed word weggeschreven. Het enige probleem is dus dat de waarde niet wordt uitgelezen.

Acties:
  • 0 Henk 'm!

  • 3V3RT
  • Registratie: Januari 2004
  • Laatst online: 16-08 22:30
OOPS!,was vergeten de shm_identifier aan te roepen in script2.php. Het werkt gewoon :). Bedankt voor iedereen die heeft meegezocht.

Acties:
  • 0 Henk 'm!

  • 3V3RT
  • Registratie: Januari 2004
  • Laatst online: 16-08 22:30
Resultaat (met gebruik van shared memory) : http://evert.powerflux.be/avatar/ . Nog niet af maar al een heel eind.

Acties:
  • 0 Henk 'm!

  • 3V3RT
  • Registratie: Januari 2004
  • Laatst online: 16-08 22:30
Denk niet dat het waard is om hier een nieuw topic voor te openen :
PHP:
1
2
3
4
Header("Content-type: image/gif");  
$im = imagecreatefromgif("geanimeerd-plaatje.gif");
Imagegif($im,'',70);
ImageDestroy($im);


Waarom laat php niet het geanimeerde plaatje zien, maar slechts het eerste frame?

Acties:
  • 0 Henk 'm!

  • TweakerNummer
  • Registratie: September 2001
  • Niet online
[edit] te laat

[ Voor 90% gewijzigd door TweakerNummer op 25-02-2006 16:16 ]


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
3V3RT schreef op zaterdag 25 februari 2006 @ 16:13:
Waarom laat php niet het geanimeerde plaatje zien, maar slechts het eerste frame?
Omdat GD dat niet kan. Kijk eens naar fPassThru().

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

3V3RT schreef op zaterdag 25 februari 2006 @ 16:06:
Resultaat (met gebruik van shared memory) : http://evert.powerflux.be/avatar/ . Nog niet af maar al een heel eind.
Waarom heb je daarvoor shared memory nodig :?

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Ik heb voor de gein eens even gekeken op die pagina en geprobeerd de avatar te veranderen, maar ik kreeg een JS (Volgens mij AJAX) error:
code:
1
2
3
4
5
Line: 13
Char: 3
Error: XMLHTTPRequest is undefined
Code: 0
URL: http://evert.powerflux.be/avatar/
OS: Windows 2000 SP4
Browser: IE 6.0.2600.1106, met SP1, alle updates geloof ik...

Maar dit is wel enigsinds offtopic, mijn excuses O+

[ Voor 8% gewijzigd door CH4OS op 25-02-2006 20:21 ]


Acties:
  • 0 Henk 'm!

  • kunnen
  • Registratie: Februari 2004
  • Niet online
Even een hint - je avatar is best wel exploitable nu. Zie http://evert.powerflux.be...mime/images/webd/suck.gif bijvoorbeeld ;)

Acties:
  • 0 Henk 'm!

  • 3V3RT
  • Registratie: Januari 2004
  • Laatst online: 16-08 22:30
dat is idd een goeie, Pulsher. referrer check moet genoeg zijn zeker?
@Erkens : Heb je dit topic doorgelezen?.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Refer(r)er check is zeker neit genoeg, want die kan je gewoon zelf opgeven bij bepaalde browsers/plugins.

Je vertrouwt user input gewoon teveel, gewoon die('rot op!') doen als iemand een link naar een ander domein probeert.

{signature}


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

3V3RT schreef op zondag 26 februari 2006 @ 00:09:
dat is idd een goeie, Pulsher. referrer check moet genoeg zijn zeker?
referer check is waardeloos ;)
@Erkens : Heb je dit topic doorgelezen?.
ik heb je zelfs de oplossing gegeven, maar voor zoiets zou ik dus absoluut geen shared memory gebruiken, tenzij je denkt dat dit echt zoveel gebruikt gaat worden dat een opslag mogelijkheid op filesystem niveau (desnoods database) niet voldoende is :o

Acties:
  • 0 Henk 'm!

  • 3V3RT
  • Registratie: Januari 2004
  • Laatst online: 16-08 22:30
oops, was ik even vergeten =D . Shared memory wou ik gebruiken omdat ik het een mooi alternatief vond voor textstorage of database.
Pagina: 1