Variablenübergabe bei Version 4.3.9

Loveboat

Erfahrenes Mitglied
Hallo zusammen,

hoffe bei Euch Hilfe zu bekommen. Leider bin ich in Sachen PHP noch mehr ein Neuling. Leider habe ich jetzt ein Problem wo ich einfach nicht weiterkomme.

Habe heute auf dem webserver die PHP-Version von 4.1.2 auf Version 4.3.9 geändert was bei Strato mit einer einfachen .htaccess gesteuert wird (innerhalb dieser Datei wird nur die Dateiendung *.php auf Version 4.3.9 verwiesen).

Wenn ich jetzt in meinem Menü Variablen übergebe
z.B. main.php?action=go&menue=tus&banner=vorstand
dann kann ich diese Werte auch mit
$action = $_GET["action"];
usw. auslesen.

Konkretes Beispiel:
==============

41: $action = $_GET["action"];
42: if(isset($action)==FALSE)
43: {
44: $action="go";
45: }
46: echo $action;

Ergebnis:
=======

Notice: Undefined index: action in /mnt/ja2/02/922/00000012/htdocs/NEU/main.php on line 41
go

Warum bekomme ich trotzdem für die Zeile 41 diese Fehlermeldung?
Lasse ich diesen Check weg so wird meine if-Abfrage einfach ignoriert.

Wo liegt hier der Fehler?

Hoffe jemand kann mir da helfen, denn bei Version 4.1.2 war das kein Problem.

Danke schon mal im voraus.

Gruß
Loveboat
 
Lass Dir $_GET mal ausgeben.
Am besten per
PHP:
print(nl2br(print_r($_GET,true)));
, das ist am uebersichtlichsten.
Es reicht aber auch
PHP:
print_r($_GET);

Kommt diese Fehlermeldung wenn Du action nicht uebergibst oder auch wenn Du's uebergibst?
Wenn es nur kommt wenn Du es nicht uebergibst liegt das an der Error-Reporting-Einstellung von PHP. Dies erzaehlt dann etwas mehr als die alte Version.

Dann musst Du auch bei $_GET['action'] mit isset() arbeiten, was ich allgemein empfehlen wuerde.
 
Hi,

danke für Deine Antwort. Als Ergebnis bekam ich ein Array() zurück.
Verstehe das ganze einfach nicht.

PHP:
$action = $_GET["action"];
if(!isset($action)==FALSE)
	{
	$action = "go";
	$menue = "tus";
	$banner = "tus";
	}
else
	{
	if($action == "go")
		{
		$menue = $_GET["menue"];
		$banner = $_GET["banner"];
		}
	}

Bei dieser Lösung funktioniert die Seite "eigentlich", bekomme aber trotzdem folgende Fehlermeldung:
Code:
Notice: Undefined index: action in /mnt/ja2/02/922/00000012/htdocs/NEU/main.php on line 40
welche die erste Zeile in diesem Code wäre. Warum nur?

Noch ne Idee?
 
wenn ich action nicht übergebe kommt die Fehlermeldung. Deshalb prüfe ich ja mit "isset" ob es die Variable gibt. Aber vorher muss ich sie einlesen mit $_GET
 
Du musst es ein bisserl umschreiben:
PHP:
 if(!isset($_GET['action'])==FALSE)
    {
    $action = "go";
    $menue = "tus";
    $banner = "tus";
    }
else
    {
    $action = $_GET["action"];
    if($action == "go")
        {
        $menue = $_GET["menue"];
        $banner = $_GET["banner"];
        }
    }
Mal ausserdem:
Was prüfst du mit if(!isset($_GET['action'])==FALSE) eigentlich?
Wenn $_GET['action'] nicht gesetzt = falsch ist, also "nicht nicht"?
Warum nicht if(isset($_GET['action']))
 
Hallo,

also ich versuch mal mein Problem nochmal im Detail zu schildern. Anscheinend habe ich mich falsch ausgedrückt.

Ich habe nur eine einzige Seite (main.php) welche sich selbst aufruft, allerdings werden jedesmal unterschiedliche Variablen (abhängig vom Menülink) übergeben.
Beim ersten Aufruf der Seite sind allerdings keine Variablen vorhanden, ist ja die Startseite.
Wenn ich jetzt allerdings nen Link anklicke dann werden Variablen übergeben, die den Content der Webseite bestimmt. Um zu prüfen ob Variablen an die Seite übergeben werden, habe ich folgenden Code in meiner Seite:

PHP:
if(isset($action)==FALSE)
	{
	$action = "go";
	$menue = "tus";
	$banner = "tus";
	}
else
	{
	if($action == "go")
		{
		$menue = $_GET["menue"];
		$banner = $_GET["banner"];
		}
	}

Leider habe ich hier das Problem, dass jede übergebene Variable ignoriert wird und dadurchfunktioniert die if/else Anweisung nicht.

Deshalb lese ich die Variable mit der $_GET-Funktion erst ein, der gesamte Code sähe dann so aus:

PHP:
$action = $_GET["action"];
if(isset($action)==FALSE)
	{
	$action = "go";
	$menue = "tus";
	$banner = "tus";
	}
else
	{
	if($action == "go")
		{
		$menue = $_GET["menue"];
		$banner = $_GET["banner"];
		}
	}

Jetzt funktioniert auch die Variablenübergabe richtig.

Allerdings: Ich bekomme jetzt für die erste Zeile dieses Codes "$action = $_GET["action"];" folgende Fehlermeldung:

PHP:
Notice: Undefined index: action in /mnt/ja2/02/922/00000012/htdocs/NEU/main.php on line 40

Warum bekomme ich hier diese Fehlermeldung?

Hoffe jetzt ist alles klarer. Ne Idee?

Danke und gruß
Loveboat
 
Wie Joerg und ich bereits erklaerten musst Du auch $_GET['action'] mit isset() pruefen.
Ansonsten wird die Meldung geworfen.

Du musst auch mal lesen was wir schreiben.
 
Zurück