$_GET['show'] Fehlermeldung

unrealzero_php

Erfahrenes Mitglied
hallo zusammen

habe eine kleine website geschrieben über die ich mit $_GET['show'] die variable show übergebe.
beim ersten aufruf der datei bekomme ich jedoch eine fehlermeldung, dass die variable $show nicht definiert ist...das kommt daher dass, beim ersten aufruf $_GET['show'] noch nicht definiert ist.

wie kann ich diesen fehler abfangen...gibt es irgend etwas wie if exist ...?

danke für die mithilfe
 
Es gibt 2 Varianten um zu pruefen ob eine Variable gesetzt ist.
Entweder
PHP:
if ($variable)
 {
   //machwas
 }
oder
PHP:
if (isset($variable))
 {
   //machwas
 }

Beide funktionieren, jedoch ist die 2. programmiertechnisch sauberer.
 
unrealzero: Wenn du mit einer Fallunterscheidung (switch, case) arbeitest (was du eigentlich aus Sicherheitsaspekten immer tun solltest), dann kannst du, wenn das Error Reporting von PHP nicht auf E_ALL (d. h. alle Fehler/Warnungen werden angezeigt) gestellt ist, auch mit einem default arbeiten.

Falls du noch keine Fallunterscheidung verwendest, möchte ich dir dies ans Herz legen, da sonst ein User mit bösen Absichten möglicherweise ziemliches Unheil auf deiner Page anrichten kann.

-> http://www.php.net/switch/
 
Er kann doch genausogut eine if-Abfrage machen? Bzw. in der show-Variable nur den Dateinamen übertragen und in der Datei die Endung hinten dran setzen, sprich:

PHP:
if(isset($_GET['show']) && $_GET['show'] != "") {
    include($_GET['show'].".php");
}
 
Du kannst auch direkt eine Variable includen vorausgesetzt Du ueberpruefst, dass kein http: oder ftp: drin vorkommt.
PHP:
$subsite=$_GET["subsite"];
if ($subsite)
	{
		if ((strpos($subsite,"index.php")>-1) || (strpos($subsite,"http:")>-1) || (strpos($subsite,"ftp:")>-1))
			{
				header("Location:index.php");
			}
		else
			{
				include($subsite);
			}
	}
else
	{
		include("welcome.php");
	}

Das ist der Code aus meiner index.php
 
Sebastian: Das wäre eben sehr unsicher, weil man so evtl. auch Scripte von fremden Seiten includen kann, die dann ganz schön viel Unheil anstellen können.

So wie reptiler das gemacht hat, finde ich das eine sehr gute Lösung. Wenn hier keiner irgendwas sicherheitstechnisches daran auszusetzen hat, werde ich das wohl in Zukunft auch so machen.
 
SilentWarrior hat gesagt.:
unrealzero: Wenn du mit einer Fallunterscheidung (switch, case) arbeitest (was du eigentlich aus Sicherheitsaspekten immer tun solltest), dann kannst du, wenn das Error Reporting von PHP nicht auf E_ALL (d. h. alle Fehler/Warnungen werden angezeigt) gestellt ist, auch mit einem default arbeiten.

Falls du noch keine Fallunterscheidung verwendest, möchte ich dir dies ans Herz legen, da sonst ein User mit bösen Absichten möglicherweise ziemliches Unheil auf deiner Page anrichten kann.

-> http://www.php.net/switch/
Danke für den Input.

Werde es mal genauer anschauen.
 
Zurück