variablen zwischen zwei php files übergeben?

ElGrAnDiOs

Mitglied
Hallo,

Ich habe ein Problem mit der übergabe von Variablen zwischen 2 php dateien.

Die eine Seite, main.php, ist meine Hauptseite.
Hier belege ich die variablen $lang und $cat.
Desweiteren wird hier per include z.B. die Seite 1_de.php eingebunden, es können aber auch andere Seiten sein, da ich sie abhängig von diesen beiden Variablen include.

Ich möchte nun, dass ich die beiden Variablen, welche ich in der datei main.php belegt habe, ebenfalls in 1_de.php verfügbar sind, da ich die Werte mit denen sie belegt wurden auch hier nutzen möchte.

Kann mir jemand sagen, wie ich z.B. diese beiden variablen, oder besser deren Werte, z.B. aus der URL auslesen kann?
Ich habe schon versucht einfach wiederrum mit $lang und $cat zu arbeiten, aber diese sind ja in der datei 1_de.php noch nicht belegt und deswegen leer.
Also z.B. die URL als String behandeln um so diese beiden dinge suchen zu können.

Danke schonmal im Vorraus

Gruß ElGrAnDiOs
 
Da durch include mehrere Skriptdateien zu einem Skript „zusammengefasst“ werden, sind auch alle vorher definierten Variablen verfügbar. Ein Beispiel:
PHP:
<?php  # skript-1.php

	$foo = 'foo';
	include 'skript-2.php';
	$bar = 'bar';

?>
PHP:
<?php  # skript-2.php

	echo $foo;   // gibt 'foo' aus
	echo $bar;   // sollte eine Fehlermeldung geben, da $bar erst später definiert wird.

?>
 
ja aber schau mal, ich habe z.B. ein menu, wo ich einen punkt habe der folgendermaßen verlinkt ist:

HTML:
<a href="main.php?lang=de&cat=1"> link #1 </a>

so klickt man nun auf diesen Link wird in einer Tabelle unterhalb des Menus folgender include ausgeführt:

PHP:
$temp1 = ($cat . "_" . $lang); include($pfad . $temp1 . "/" . $temp1 . ".php");

hierbei spielt $pfad keine rolle... hier wird die datei 1_de/1_de.php included ...

so nun möchte ich aber in der Datei 1_de.php selber nochmals dateien includen, welche nach den vorher schon gewählten Settings geladen werden sollen, also z.B. auf deutsch sind ($lang...)

ich hoffe ich habs jetzt besser erklärt. also das was du mir geraten hast funktioniert nicht, und ich wollte versuchen es simpel zu halten, ohne sessions wenns geht :confused:
 
Hallo,

ElGrAnDiOs hat gesagt.:
so nun möchte ich aber in der Datei 1_de.php selber nochmals dateien includen, welche nach den vorher schon gewählten Settings geladen werden sollen, also z.B. auf deutsch sind ($lang...)
Und was hält dich davon ab? Wie Markus schon erläuterte, kannst du hier in 1_de.php auf die in der inkludierenden Datei definierte Variable $lang problemlos zugreifen.

Grüße,
Matthias
 
ja aber ich definiere die variable nicht in der inkludierten datei sondern in main.php, also in der datei, wo inkludiert wird...

aber hat sich nun erledigt, ich habs mit javascript gemacht, weil ichs so nicht hinbekomme, trotzdem danke für die mühe
 
Wenn die variablen VOR dem include defniert werden, dann kann die includierte datei auch darauf zugreifen, nur wenn eine function benutzt wird, dann must die variable erst noch globalisiert werden.

Code:
function xy ()
{
 global $varname;
 ...
 ...
}

Wenn register_globals off ist und du auf Variablen in der URL zugreifen willst, dann verwende bitte $_GET['varname'] um auf die Variable zuzugreifen.
 
ja das sollte sie ja auch, aber das problem is sie tuts nich...

Also ich erklärs nochma detailiert:

Die erste Seite ist main.php

hier habe ich einen link welcher auf folgendes verweist:
HTML:
<a href="main.php?lang=de&cat=1">link1</a>

desweiteren befindet sich weiter unten auf dieser Seite (main.php) ein include, der wie folgt aussieht:

PHP:
$temp1 = ($cat . "_" . $lang); 
include($temp1 . "/" . $temp1 . ".php");

klicke ich nun auf den Link so wird an dieser Stelle die Datei "1_de/1_de.php" included.

In dieser Datei habe ich ebenfalls einen Link der auf folgendes verweist:
HTML:
<a href="main.php?lang=de&cat=1&sub=1">link2</a>

weiter unten in dieser Datei (1_de/1_de.php) habe ich wiederrum einen include der wie folgt aussieht:

PHP:
$temp1 = ($cat . "_" . $lang); 
include($temp1 . "/" . $temp1 . "_" . $sub . ".php");

klicke ich nun auf diesen Link, so wird an dieser Stelle die Datei "1_de/1_de_1.php" included.

So und hier ist der Fehler! Wenn ich auf den Link2 klicke passiert absolut nix, und ich vermute, oder besser ich weis, dass es aufgrund dessen nicht geht, weil die Variablen $lang, $cat und $sub zwar in der url definiert sind ("main.php?lang=de&cat=1&sub=1") jedoch nicht an die Datei 1_de/1_de.php übergeben werden.

Nochma schematisch:

Code:
main.php --> Link1 (main.php?lang=de&cat=1)

bei klick von Link1 --> include(1_de/1_de.php)

1_de.php --> Link2 (main.php?lang=de&cat=1&sub=1)

bei klick von Link2 --> include(1_de/1_de_1.php)  // Funktioniert nicht, da sowohl $lang, $cat als auch $sub leer sind, obwohl in URL definiert...

So ich hoffe ich habs nun besser erklärt sodass mir vielleicht einer weiterhelfen kann.
Danke schonma im vorraus!
 
Bitte versuche mal statt
Code:
$cat
Code:
$_GET['cat']
zu verwenden, da ich denke das register globals ausgeschaltet ist. Bei $lang und $sub bitte genauso.

Marcus
 
jo, register globals is aus, hab grad ma geschaut...

hab ma testweise
PHP:
 echo($_GET['cat']);
gemacht, aber es kommt nix, obwohl cat in der URL gesetzt ist... ich versteh das nich :(
 
Zurück