# $_GET und $_POST Variablen Global machen?



## MistR-X (14. April 2004)

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:

```
<?
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


----------



## Kerwin (14. April 2004)

Hast du das mal probiert? ist ungetestet

"externe" Variablen musst du (meines Wissens nach) IMMER in der function(){} als global deklarieren

```
function .......(.........){
    global $_POST;
    global $_GET;

    //Anweisungen
  }
```


----------



## MistR-X (14. April 2004)

jop hab ich eben getestet... geht aber leider auch nicht 
trotzdem danke..


----------



## Chino (14. April 2004)

> _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


----------



## Kerwin (14. April 2004)

du hast das Array daimt global gemacht.
in der function musst du dann $_POST['xxx'] abrufen

```
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:

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

function xxx(xxx){
  global $user;

  if($user['name']=='God'){
    //xxx
  }
}
```


----------



## MistR-X (14. April 2004)

dachte ich mir auch... in der theorie auch richtig aber probier die funktion mal aus... wirst sehen da geht leider nix :/


----------



## Kerwin (14. April 2004)

das superglobale net brauchen wusst ich net, wieder was gelernt


----------



## Chino (14. April 2004)

> _Original geschrieben von Kerwin _
> *du hast das Array daimt global gemacht.
> in der function musst du dann $_POST['xxx'] abrufen
> *
> ...


 Das global ist hier 100% überflüssig.


----------



## MistR-X (14. April 2004)

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..


----------



## Chino (14. April 2004)

> _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


----------



## MistR-X (14. April 2004)

chino... danke für die belehrung... denke aber nicht dass das nötig gewesen wäre...
meine Rechtschreibung ist im allgemeinen in Ordnung, auf groß und kleinschreibung achte ich im Internet normal eh nicht... das sollte aber auch nicht weiter schlimm sein...
zu 2.
die posts wurden gepostet als ich den letzten schrieb, konnte also die posts nicht lesenm, da ich sie nicht bemerkt habe..


----------



## Chino (14. April 2004)

> _Original geschrieben von MistR-X _
> *chino... danke für die belehrung... denke aber nicht dass das nötig gewesen wäre...
> meine Rechtschreibung ist im allgemeinen in Ordnung, auf groß und kleinschreibung achte ich im Internet normal eh nicht... das sollte aber auch nicht weiter schlimm sein...*


 Du hast bei der Anmeldung hier bei tutorials.de die Netiquette gelesen und akzeptiert, also solltest Du dich auch dran halten.



> _Original geschrieben von MistR-X _
> *zu 2.
> die posts wurden gepostet als ich den letzten schrieb, konnte also die posts nicht lesenm, da ich sie nicht bemerkt habe.. *


 Ok, dann solltest Du dies jetzt nachholen. Es sei denn, Du willst Dir unnötig Arbeit machen


----------



## MistR-X (14. April 2004)

naja bei meiner anmeldung stand da noch nich viel von nettiquette... kann auch sein dass ichs überlesen hab... naja whatever...
jedenfalls brauch ich eine funktion die aus den $_GET und $_POST Variablen globale macht, so dass ich sie halt über $variable ansprechen kann und nicht über $_GET['variable'] oder $_POST['variable']
gruß,
der-kobold.net


----------



## Matthias Reitinger (14. April 2004)

MistR-X, du wirst hiermit verwarnt. Halte dich bitte in Zukunft an die Regeln. Danke.


----------



## MistR-X (15. April 2004)

ja lol verwarnt mich halt... wollts mich anzeigen oder was?
wenn ihr den acc löscht mach ich halt nen neuen so siehts aus


----------



## Sven Mintel (15. April 2004)

Hallo....


dass Variablen innerhalb von Funktionen globalisiert werden müssen, wurde ja bereits erwähnt.
Ob das nun weniger Schreibkram ist, käme auf dein Skript an.

Optional könntest du vielleicht Konstanten definieren..die brauchst du nicht zu globalisieren.

```
<?php
foreach($_GET as $key =>$value)
    {
    define($key,$value);
    }
?>
```
.. ist aber eigentlich nicht die feine englische Art, soetwas zu tun.


Ansonsten...probiers doch mal aus, mit der Gross/Kleinschreibung... so schwer sollte das doch nicht fallen....
ab und zu hast du doch schon mal einen Grossbuchstaben drinnen

Ist doch albern, deswegen seinen Account zu gefährden... oder ist er dir so wenig Wert?


----------



## Christian Fein (15. April 2004)

> _Original geschrieben von MistR-X _
> *ja lol verwarnt mich halt... wollts mich anzeigen oder was?
> wenn ihr den acc löscht mach ich halt nen neuen so siehts aus  *



Hiermit ist es dir untersagt auf Tutorials.de zu posten.

Dein Accaunt ist mit sofortiger Wirkung gesperrt.


----------



## JohannesR (15. April 2004)

> _Original geschrieben von MistR-X _
> *ja lol verwarnt mich halt... wollts mich anzeigen oder was?
> wenn ihr den acc löscht mach ich halt nen neuen so siehts aus  *



Das wirst du auch tun müssen, denn jetzt bist du gebannt.


----------



## Tim C. (15. April 2004)

Ich möchte anmerken, dass die Aussage von Christian "Es ist dir hiermit untersagt auf tutorials.de zu posten" endgültig ist und dir verbietet, einen neuen Account anzulegen.


----------

