get Variable includen ?

boesewicht

Mitglied
Mahlzeit !

soweit ich weis kann man keine get Variablen includen ...

wie bekomme es hin das in meiner Navigation:

PHP:
<?PHP
  if ( empty( $_GET['go'] ) ) { 
   include 'news.php'; 
  } else { 
   switch ( $_GET['go'] ) 
   { 
     case 'news': 
          include 'news.php'; 
     break; 
     case 'people': 
          include 'people.php'; 
     break; 
     case 'shop': 
          include 'shop.php'; 
     break; 
   } 
  }

?>

Wenn ich nun nen get includen will klappt das nicht, beispielsweise :

PHP:
case 'waschmaschine'; 
        include 'shop.php?artikelshop=die Waschmaschine&preisshop=500'; 
break;

Gibt es eine Möglichkeit dieses Problem elegant zu lösen ?
 
Stimmt denn die Pfadangabe der Ressource? Probier mal Folgendes:
PHP:
include 'shop.php?artikelshop=die%20Waschmaschine&preisshop=500';
Übrigens: Im Deutschen steht vor Satzzeichen kein Leerzeichen.
 
Erst in PHP werden die Daten des so genannten Query Strings (des Teils hinter dem Fragezeichen) in Variablen gespeichert. Bis dahin ist es einfach nur ein Teil des URLs.
 
Richtig, daher sollten zumindest folgende Pruefungen vorgenommen werden:
  • Die zu includende Datei darf nicht die includende Datei sein, ansonste gaebe es eine Endlosschleife
  • Die zu includende Datei darf nicht auf einem anderen Server liegen, daher darf sie nicht mit http://, https://, oder ftp:// anfangen.
Allgemein ist auch zu empfehlen allow_url_fopen auf off zu stellen, vorausgesetzt man hat Zugriff auf die php.ini.
Dies hilft schon ungemein bei der Abwehr von Cross-Site-Scripting-Angriffen.
 
Dennis Wronka hat gesagt.:
  • Die zu includende Datei darf nicht auf einem anderen Server liegen, daher darf sie nicht mit http://, https://, oder ftp:// anfangen.

Das stimmt so nicht ganz!
wenn ich jetzt Beispielsweise hergehe und folgende Ausgabe erzeuge:
PHP:
<?php
	echo "<?php\n
	for(\$i=0; \$i<10; \$i++) {\n
		echo \$i.'<br>';\n
	}
	\n?>";
?>

und sie diese von nen anderen Server include, ist es ausführbar. Es muss sich nur um interpretierbaren PHP Code handeln. Allerdings ist zu beachten, dass der Server das Script vorher übersetzt ;)
Nur soviel dazu xD
 
Zuletzt bearbeitet:
Darum soll ja geprueft werden ob der String mit http://, https:// oder ftp:// beginnt damit Dateien die so anfangen nicht includet werden.
Es soll ja, aus Sicherheitsgruenden, verhindert werden, dass von einem anderen Server includet werden kann.
 
Zurück