WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   php - register_globals (http://www.wcm.at/forum/showthread.php?t=97636)

hugin grímnirson 21.05.2003 18:50

php - register_globals
 
hi,

kurze frage:

wenn in der php.ini "register_globals" auf "off" gesetzt ist: verhindert dies nur, dass variablen, die zb per POST übergeben wurden global zur verfügung stehen, oder auch das ich eine variable mit "global $NAME;" global definieren kann?

käptn 21.05.2003 19:39

Eine $var im globalen Namensraum ist logischerweise global.

Zugriff auf globale Variblen innerhalb von Funktionen mit $GLOBALS['varname'] ist der momentan forcierte Weg.

register_globals=Off bedeutet, das Variablen in den superglobalen Arrays $_* nicht mehr automatisch in den globalen Namensraum importiert werden.

~

hugin grímnirson 21.05.2003 20:28

ok, ich glaub ich verstehe.

etwas konkreter zum hintergrund der frage:

hatte versucht eine variable mit

global $VAR;
$VAR = "WERT";

zu definieren, um sie dann in einer funktion nutzen zu können. in der funktion stand sie mir jedoch als $VAR nicht zur verfügung, über $GLOBALS konnte ich jedoch darauf zugreifen.

dabei stelle ich mir jetzt folgende fragen:
war das überhaupt der richtige weg, um die variable in der funktion nutzen zu können (ohne dass ich sie beim aufruf mitgebe)?
und wenn ja, warum ist sie mir dann nicht zur verfügung gestanden?
oder dient global() nur dazu, eine variable, die innerhalb einer funktion erzeugt wurde, auch außerhalb dieser nutzen zu können?

käptn 21.05.2003 20:49

Weil du

global $var;

früher in der Funktion verwendet hast, um darauf zu referenzieren.

ALT:
PHP-Code:

$var 2;
function 
foo(){
  global 
$var;
  echo 
$var;


NEU:
PHP-Code:

$var 2;
function 
foo(){
  echo 
$GLOBALS['var'];


In Funktionen definierte Variablen stehen nur in der entsprechenden Funktion zur Verfügung, ansonsten würde es ein ziemliches Schlamassel geben...

~

hugin grímnirson 21.05.2003 20:59

verstehe

muchas gracias!


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag