includen bei switch erleichtern ?
Otto
- php
Guten Tag,
kann man bei der switch Anweisung sich das includen der Dateien
vereinfachen??
also mein switch block sieht folgendermaßen aus:
$content = isset($_GET['content'])?$_GET['content']:'';
switch($content)
{
case "das":
include ("das.php");
default:
include ("default.php");
}
hab jetzt 40 dateien und diese in 4 verschiedene unterverzeichnisse.
anschließend möchte ich noch welche hinzufügen.
dann muss ich jedesmal die datei in die switch anweisung hinzufügen, und den pfad anpassen.
gibt es da ein kleinen trick, den man bei größeren seiten anwenden kann ?
wäre klasse, wenn da jmd ne abhilfe kennt.
ich bedanke mich schonmal ganz doll.
mfg
Otto
hi,
kann man bei der switch Anweisung sich das includen der Dateien
vereinfachen??
"brauchst" du ein switch an der stelle?
m.E. nein.
wenn du eine direkte zuordnung des in $content übergebenen wertes zum dateinnamen hättest (z.b. es wird jedes mal nur ".php" angehängt), dann könntest du ja direkt
include $content.".php";
schreiben.
klar, dass wirft eine grosse sicherheitslücke auf - also vorher alle erlaubten inhalte in einem array ablegen, und vorher noch mit in_array() prüfen, ob der wert im array enthalten ist.
aber auch, wenn due zuordnung nicht so einfach ist, geht es doch prinzipiell genauso simpel: dann nimmst du halt ein assoziatives array.
dann kannst du dir auch die überprüfung mit in_array sparen, und brauchst stattdessen nur noch überprüfen, ob ein element mit dem schlüssel $content existiert.
$includedateien = array('info' => 'infoxy.php', 'blah' => '../blah.html', ...);
if(array_key_exists($content, $includedateien) {
include $includedateien[$content]);
}
gruss,
wahsaga
hi,
hab mal sowas erstellt, aber das ist glaub auch nicht sicher oder ?
<?php
$menue = isset($_GET['menue'])?$_GET['menue']:'';
$dir = isset($_GET['dir'])?$_GET['dir']:'';
$file = isset($_GET['file'])?$_GET['file']:'';
if($menue == "info/") { $pfad = "content/".$menue;}
if($menue == "kontakt/") { $pfad = "content/".$menue;}
if($menue == "clan/") { $pfad = "content/".$menue;}
if($menue == "server/") { $pfad = "content/".$menue;}
if($menue == "member_area/") { $pfad = "content/".$menue;}
if(!$menue) { include ("content/info/news/news.php");} else { include ($pfad.$dir."/".$file.".php");}
?>
mfg
Otto
hi,
hab mal sowas erstellt, aber das ist glaub auch nicht sicher oder ?
das ist vor allem humbug.
if($menue == "info/") { $pfad = "content/".$menue;}
if($menue == "kontakt/") { $pfad = "content/".$menue;}
if($menue == "clan/") { $pfad = "content/".$menue;}
if($menue == "server/") { $pfad = "content/".$menue;}
if($menue == "member_area/") { $pfad = "content/".$menue;}
so viele IFs, die ein und die selbe variable auf verschiedene werte abfragen, sind ja wieder ein konstrukt, wo ein switch die _viel_ bessere alternative wäre.
allerdings sind ja auch die verschiedenen abfragen hier überflüssig, da die aktion die du ausführst, ja immer die selbe ist.
dann könntest du ja gleich alle bedingungen in _einen_ if prüfen, in dem du sie per logischem UND verknüpfst.
die version mit dem array mit den "erlaubten" werten wäre aber immer noch vorzuziehen.
gruss,
wahsaga