phpbar.de logo

Mailinglisten-Archive

[php] Environment Variablen und variable VariablenNamen

[php] Environment Variablen und variable VariablenNamen

Henning Jödden php_(at)_phpcenter.de
Fri, 1 Feb 2002 16:44:38 +0100


Hallo nochmal,

heute kommt`s aber mal dicke ;-)

Zwei Fragen:
1. Wenn ich ENV vars wie $PATH_TRANSLATED oder $REQUEST_METHOD in
Funktionen verwende, muss ich sie auf global setzen, oder geht das mit
getenv()?

2. Gibt es eine Möglichkeit über variable VariablenNamen die ENV
VarNamen zu dynamisieren?

Seit 4.1.0 sind die Namen dewr ENV vars ja gekürzt worden. Wenn ich
jetzt ein versionsunabhängiges Script schreiben will sagen wir mal von
4.0.0 bis 4.1.0,
kann ich dann so vorgehen?

<beispielcode>
if (ereg("^4\.1",phpversion()))	:
	$arrName = "_".$REQUEST_METHOD;
else	:
	$arrName = "HTTP_".$REQUEST_METHOD."_VARS";
endif;

if (!isset($$arrName) || (sizeof($$arrName) == 0))	:
	$this->programError("noVars");
else	:
	$this->vars = $$arrName;
endif;
</beispielcode>

Noch ein Anwendungsgebiet, wäre die php-session-konstante.
Da diese ja (theoretisch) auch von Server zu Server variieren kann.
Könnte man so etwas verwenden?

<beispiel>
$sidName = session_name();
$sName = $$sidName;

if (!isset($sName) || empty($sName))	:
	srand((double)microtime()*1000000);
	$s_id = md5(uniqid(rand()));
	session_id($s_id);
endif;
session_start();
</beispiel>

Die if()-endif; schreibweise bin ich mir gerade am abgewöhnen, also
nicht schimpfen ;-)

jedenfalls gibt:
$sidName = session_name();
var_dump($sidName);
$sName = $$sidName;
var_dump($sName);

nur "string(9)'PHPSESSID'" und "NULL" aus. Was ich auch nicht ganz
verstehe. Wahrscheinlich hab ich das ganze variable Variablen Ding noch
nicht kapiert.

erklärt`s mir, bitte :-)

danke & grüsse
Henning


php::bar PHP Wiki   -   Listenarchive