$_GET und $_POST Variablen Global machen?

Status
Nicht offen für weitere Antworten.

MistR-X

Gesperrt
Hallo,
Ich habe versucht ein Script zu bauen, dass aus allen $_GET und $_POST Variablen globale Variablen zu machen, da in einer funktion die include(); verwendete diese $_GET und $_POST Variablen in den durch die Funktion includeten Dateien nicht mehr da waren (außer man hat halt vor dem include alle benötigten variablen manuell global gesetzt...
Allerdings funktioniert dieses Script jetzt leider nicht so wie ich das gern hätte.. könntet ihr mir vllt helfen
so sieht mein script bis jetzt aus:
PHP:
<?
foreach ($_GET as $key => $value) {
    global $$key;
    print $key;
}

// und meine funktion (eigentlich unwichtig)

function load_template($file, $errormessage = "<br><br>Es ist ein Fehler beim laden der Seite aufgetreten!")
{
	if(!is_file("$file"))
	{
		insert_head("Fehler!","sonstige/fehler");
		print("<p class=\"caption\">". $errormessage ."</p>");
		insert_foot();
	}
	else
	{
		include("$file");
	}
}
?>
Wäre nett wenn mir einer helfen könnt ;)
gruß,
der-kobold.net
 
Hast du das mal probiert? ist ungetestet

"externe" Variablen musst du (meines Wissens nach) IMMER in der function(){} als global deklarieren
PHP:
  function .......(.........){
    global $_POST;
    global $_GET;

    //Anweisungen
  }
 
Zuletzt bearbeitet:
Original geschrieben von MistR-X
Hallo,
Ich habe versucht ein Script zu bauen, dass aus allen $_GET und $_POST Variablen globale Variablen zu machen, da in einer funktion die include(); verwendete diese $_GET und $_POST Variablen in den durch die Funktion includeten Dateien nicht mehr da waren (außer man hat halt vor dem include alle benötigten variablen manuell global gesetzt...
Dann hast Du meiner Meinung nach einen Fehler gemacht, da sowohl das $_GET- als auch das $_POST-Array superglobal ist. Das bedeutet, dass beide assoziative Arrays in dem lokalen Scope einer Funktion/Klasse verfügbar sind, ohne sie vorher zu globalisieren.

http://de.php.net/manual/de/language.variables.scope.php
 
du hast das Array daimt global gemacht.
in der function musst du dann $_POST['xxx'] abrufen
PHP:
function xxx ($xxx){
  global $_POST;

  if($_POST['name']=='admin'){
   // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  }
}

Das sollte eigentlich schon gehen.
WENN nicht, array anlegen. Das geht 100% weil ich das selber verwende

bsp:
PHP:
$user['id']=19;
$user['name']='God';
$user['mail']='God@god.de';

function xxx(xxx){
  global $user;

  if($user['name']=='God'){
    //xxx
  }
}
 
dachte ich mir auch... in der theorie auch richtig aber probier die funktion mal aus... wirst sehen da geht leider nix :/
 
Original geschrieben von Kerwin
du hast das Array daimt global gemacht.
in der function musst du dann $_POST['xxx'] abrufen
PHP:
function xxx ($xxx){
  global $_POST;

  if($_POST['name']=='admin'){
   // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  }
}


Das sollte eigentlich schon gehen.
Das global ist hier 100% überflüssig. :rolleyes:
 
jo kerwin, das geht zwar aber genau so will ich es ja eben nicht ^^
ich will die "$_GET" bzw "$_POST" variablen ja abrufen können ohne vorher "$_GET['variablenname']" oder "$_POST[*variablenname'" schreiben zu müssen da das eine höllen arbeit wäre das alles umzuschreiben..
 
Original geschrieben von MistR-X
jo kerwin, das geht zwar aber genau so will ich es ja eben nicht ^^
ich will die "$_GET" bzw "$_POST" variablen ja abrufen können ohne vorher "$_GET['variablenname']" oder "$_POST[*variablenname'" schreiben zu müssen da das eine höllen arbeit wäre das alles umzuschreiben..
1. Halte Dich bitte an die Netiquette. Der rote Kasten beim Erstellen einer Antwort weist unübersehbar drauf hin.

2. Wenn jemand Dir schon helfen will, dann solltest Du die Antworten (und eventuell gepostete Links) lesen, falls nicht, dann musst Du eben alles umschreiben ;)
 
Status
Nicht offen für weitere Antworten.
Zurück