Prüfung auf Existenz von einzubindenden Dateien
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
bar echo
beispiel
besseren code
code
datei
design
element
fehler
file
gast
grad
http
index
inhalt
login
mache
problem
syntax
zutun
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also wenn ich das richtig verstehe (Schon die Rechtschreibung ist ja der Horror) willst du dein Design ändern, wenn über eine Get-Variable ein Wert gesetzt wird.
Du solltest also erstmal abklären, wie dein Design definiert ist. Ist es in einer externen CSS-Datei Definiert, im <head> oder für jedes einzelne Element direkt definiert.
Fall 1: Externe CSS-Datei
Der wohl einfachste Fall wäre, wenn du das Design komplett per externer CSS-Datei definiert hast. Hier könntest du beispielsweise schlicht ein Array basteln, welches jede CSS-Datei enthält und dann die Dateien einfügen. Beispiel:<? $cssdatei = array( "datei1.css", "datei2.css", "datei3.css" // usw... ); echo "<link href=\"/css/$cssdatei[$_GET['foo']]\" type=\"text/css\" rel=\"stylesheet\">"; ?>
Fall 2: Im <head> definiert
Im Head-Bereich seine Daten einzubinden wäre die nächste Möglichkeit. Hier wäre es nötig, die "sich ändernden" Werte in Variablen zu fassen. Beispiel:<? $foo = $_GET['foo']; $bar = $_GET['bar']; echo "<style> <!-- #foo {width:$foo; height: $bar;} --> </style>"; ?>
Fall 3: Jedes Element einzeln
Dieser Fall unterscheidet sich kaum vom zweiten Fall. Nur, dass hier natürlich die Variablen im Element eingefügt werden. Beispiel:<? $foo = $_GET['foo']; $bar = $_GET['bar']; ?> <!-- ... --> <? echo "<div style=\"width:$foo; height:$bar;\">"; ?> </div>
Fall 4: Elemente via GET ausblenden
Der letzte mir vorstellbare Fall wäre, dass du einzelne Elemente ausblenden willst, wenn eine GET-Variable gesetzt ist. Obwohl mir der Fall fast trivial erscheint, hier nochmal ein Beispiel:<? if isset($_GET['foo']) $foo = $_GET['foo']; if isset($_GET['bar']) $bar = $_GET['bar']; ?> <!-- ... --> <? if isset($foo) { echo "<div> foo! </div>"; // ... } if isset($bar) { echo "<div> bar! </div>"; // ... } ?>
So, ich hoffe ich konnte helfen. Ansonsten: Problem näher definieren.
PS: Alle Codes ungetestet - mag sein, dass man einige geringfügig anpassen muss.
-
Hallo,
Nochmal ich möchte meine Seite mit GET Machen,
Ich habe Jetzt mal einen Besseren Code
<?php [DESIGN] [GET = Inhalt] [GET = Noch ein inhalt der sich bei einem Login auf die Seite Ändert] [DESIGN] ?>
Beitrag zuletzt geändert: 31.10.2009 14:11:36 von privatecitypage -
HÄH?
Willst du irgendein Templatingsystem machen oder was ist das? ich versteh zumindest gar nichts... -
privatecitypage schrieb:
Hallo,
Nochmal ich möchte meine Seite mit GET Machen,
Ich habe Jetzt mal einen Besseren Code
<?php [DESIGN] [GET = Inhalt] [GET = Noch ein inhalt der sich bei einem Login auf die Seite Ändert] [DESIGN] ?>
GET oder Get stehen für:
Also mit welchem "GET" willst du die Seite machen?
* einen Stadtteil der kroatischen Stadt Split
* das hebräische Wort für Scheidebrief
* GET-ligaen, eine Spielklasse im norwegischen Eishockeysport
* GET, ein anfordernder Befehl in manchen Programmiersprachen
* GET-Anforderung, ein Begriff im Hypertext Transfer Protocol (HTTP)
* Georgsmarienhütte Eisenbahn- und Transport GmbH welche die Bahnstrecke Georgsmarienhütte–Hasbergen besitzt
* den IATA-Code für den Flughafen von Geraldton (Australien)
* Groupe des écoles des télécommunications, die frühere Bezeichnung einer französischen Gruppe öffentlicher Bildungs- und Forschungseinrichtungen für Informations- und Kommunikationstechnik, heute Institut TELECOM
Wenn es mit PHP zutun hat, bleibt nur $_GET oder HTTP-GET. Wobei letzteres weniger mit PHP zutun hat. Also wie wäre es, wenn du erstmal deine Absichten genau spezifizierst? -
<?php [DESIGN] [GET = Inhalt] [GET = Noch ein inhalt der sich bei einem Login auf die Seite Ändert] [DESIGN] ?>
$_GET ist eher für kleinere Informationen geeignet nicht für wirklichen Inhalt. Du solltest lediglich variablen übergeben die du später auswertest und dann gewisse dateien per Include lädst. Für Login benutzt man eher $_Session.
Mehr infos unter php.net
Gruß
Chris -
@nerdinator
Falls du es nicht wusstest ich bin nicht blöd und ich dachte ihr währt es auch nicht!
Wenn ich Schon UNTER PHP & MYSQL Mache muss es doch schon was mit PHP ZU TUEN HABEN ODER???????
So was Regt mich auf.
@keine ahnung mehr :D
Das ist mir schon alles klar aber ich möchte so was gerne umgehen!!
So sieht meine index.php aus
<?php session_start(); require("connect.inc.php"); include 'config.inc.php'; if(!session_is_registered('user') || $_SESSION['user'] == "") { header("Location: gast.php"); exit(); } {Sag ich nicht} if ($_GET['pages'] == '') { $seite = @implode("",file("pages/".$_GET['pages'].".php")); echo $seite; echo $_GET['pages']; } {sag ich nicht} ?>
Also das habe ich auch ohne hilfe geschafft!
Nun möchte ich aber das der Code auch so Funktioniert wie es eigentlich sein sollte,tut es aber nicht Grade beim get habe ich paar Probleme und zwar weiß er nicht welsche Seite Gemeint ist wenn kein zum beispiel ?start=index steht!!!!
Wie kann ich das ändern?
Beitrag zuletzt geändert: 31.10.2009 22:34:13 von privatecitypage -
Wenn "nix dransteht" ist das Array ja leer. Also musst du nur definieren, was getan werden muss wenn es leer ist
-
Wie meinst du das jetzt genau?
Ich möchte ja das die Seiten in dem Ordner pages/... so angenommen werde das ich diese nicht immer hinzufügen muss sondern ganz einfach so annehmen kann!
Und ich möchte das wenn eine Seite nicht Gefunden wird das da Automatisch steht Seite nicht gefunden! -
Ich dachte du bist nicht blöd? Was hindert dich dann daran PHP.net und Google zu benutzen?
-
Schon aber es gibt nicht grade Solsche Codes die darin Funktionieren würde!
Aber Google ist nun mal dein Freund oder
Hab mal was Gegoogelt und habe dann so ein Code Zusammen gewürfelt
if ($_GET['pages'] == '') { $filename = '/pages/'.$_GET['pages'].''; if (file_exists($filename)) $seite = @implode("",file($filename) echo $seite; else { print "Die Datei $filename Gibt es nicht"; }); }
Aber es kommt immer diese Fehler Parse error: syntax error, unexpected T_ECHO
Ich weiß was der Fehler heißt aber ich weiß nicht wie das Problem Beheben kann!
Der Fehler ist beiecho $seite
Beitrag zuletzt geändert: 31.10.2009 23:13:39 von privatecitypage -
privatecitypage schrieb:
[...]
if ($_GET['pages'] == '') { $filename = '/pages/'.$_GET['pages'].''; if (file_exists($filename)) $seite = @implode("",file($filename) echo $seite; else { print "Die Datei $filename Gibt es nicht"; }); }
[...]
Der Fehler ist beiecho $seite
Der Fehler liegt in den Zeilen darüber...
if (file_exists($filename)) { $seite = @implode("",file($filename)); echo $seite; } else {
Mein Fehler... hab vergessen den Rest zu kopieren!
} else { print "Die Datei $filename Gibt es nicht"; };
Beitrag zuletzt geändert: 1.11.2009 12:36:52 von staymyfriend -
});
werde zu
}
Weiterhin, was soll das:
$seite = @implode("",file($filename));
Ich glaube du meinst:
$seite = file_get_contents($filename);
Beitrag zuletzt geändert: 1.11.2009 9:30:07 von nikic -
Danke, Werde es mal ausprobieren.
-
privatecitypage schrieb:
Richtig und ich habe dir schon die bestmöglichen Lösungen geliefert, denn wenn du nicht blöd bist, weisst du, dass
@nerdinator
Falls du es nicht wusstest ich bin nicht blöd und ich dachte ihr währt es auch nicht!
Wenn ich Schon UNTER PHP & MYSQL Mache muss es doch schon was mit PHP ZU TUEN HABEN ODER???????
So was Regt mich auf.
eine potentielle Sicherheitslücke ist. Immer schön ein Array anlegen, in welcher die Zulässigen Dateien gespeichert sind. Wenn man es sich einfach machen will, sagt man:<?php session_start(); require("connect.inc.php"); include 'config.inc.php'; if(!session_is_registered('user') || $_SESSION['user'] == "") { header("Location: gast.php"); exit(); } {Sag ich nicht} if ($_GET['pages'] == '') { $seite = @implode("",file("pages/".$_GET['pages'].".php")); echo $seite; echo $_GET['pages']; } {sag ich nicht} ?>
<? function IsAllowed($filename) { $filename = new array(); $fileClass = dir("/pages/"); $result = false; while(false!==($datei = $fileClass->read())) { $file[$index] = $datei; $index++; } foreach ($file as $value) { if($value = $filename) $result = true; } return $result; } // ... $meine_datei = $_GET['pages']; if(isAllowed($meine_datei)){ echo $meine_datei; } ?>
Ist natürlich jetzt zusammen gegoogled und ungetestet, aber prinzipiell sollte das so funktionieren, wenn man es nötigenfalls geringfügig anpasst. Tendenziell ist das der von mir anfangs beschriebene erste Fall.
Aber wir sind alle nicht blöd... -
Also zunächst solltest du dem Benutzer eine definierte Menge an Designs vorgeben und ihn diese dann zur Auswahl stellen.
Dann hast du zb. 5 Designs (1-5) und 1 ist das Standard Design. Die ID hälst du in der Session oder im Cookie oder besser gleich in beiden fest. Wenn der User nun das Design (1-5) via Get oder Post ändert, dann aktualisierst du das Cookie sowie die Session um die entsprechende INformation.
Hinter den IDs verstecken sich für dich sichtbar die notwendigen Informationen, zb. der Pfad zu den Grafiken oder den CSS Dateien. Im Idealfall ist es einfach nur ein Name der den Designordner angibt. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage