Template System
- GameOver
- User
Hallo,
habe heute ein neues Projekt gestartet und habe mir gedacht, dieses Mal gleich das Meiste in OOP umzusetzen.
Hab bis jetzt ne HTML und ne Page Class.
Das HTML Grundgerüst bleibt imemr gleich, es ändert sich nur der body Inhalt. Wenn ich zB die Startseite aufrufe, hat die variable action den Wert start und die Class Page ist halt dafür zuständig, die richtige Datei zu includen. So siehts sie jetzt aus:
<?php
class Page
{
public function __construct($action)
{
if(!isset($action))
{
include("start.php");
}
else
{
$action .= '.php';
include("$action");
}
}
}
?>
Funktionieren tut es, nur folgendes Problem tritt natürlich auf:
http://www.mc-web.net/index.php?action=eintragen
Sobald man oben in der adress zeile der Variable action den Wert abcasd oder sonst irgend einen anderen gibt, kann das Object natürlich nicht diese Datei includen, da sie nicht existiert. Ich muss also überprüfen, ob der Inhalt der Variable überhaupt existiert, falls nicht, bleibt der user auf der selben Seite.
Nur wie kann man das am Besten lösen?
Grüße
MC-Web
- Ultima
- Admin
- Website
Eine gute Möglichkeit bietet da in_array.
Du gibst die möglich werte in das Array ein und prüfst bei einem Aufruf ob der Wert in dem Array existiert.
Eine Zweite Möglichkeit wäre mit file_exists() zu gucken ob die Datei die du includen willst existiert.
Admin of Ultima-Project.net
- GameOver
- User
Hi,
danke, funktionieren tuts.
Habe ich sonst irgendwelche Sicherheitslücken?
(Neues Script)
<?php
/*
+-------------------------+
| Page Klasse |
+-------------------------+
+-------------------------+
| +__construct() |
+-------------------------+
*/
class Page
{
public function __construct($action)
{
if(!isset($action))
{
include("start.php");
}
$action .= '.php';
if(file_exists($action))
{
include("$action");
}
}
}
?>
MC-Web
- Ultima
- Admin
- Website
Ja, wenn die Datei nicht existiert, was machst du dann?
und warum schreibst du alles einzeln auf?
if(isset($action) && file_exists($action.'.php')) {
include($action.'.php');
} else {
include("start.php");
}
Admin of Ultima-Project.net
- GameOver
- User
Wenn die Datei nicht existiert, wird nichts includet, dann gibts einfach keinen Content.
Naja ich will ja jetzt nicht, dass die Startseite aufgerufen wird, falls die Datei nicht existiert. Wollte da eigentlich eine .tpl Datei mit Fehlermeldung inkludiere, falls die aufgerufene Datei nicht existiert.
Werd es aber gleich noch mal überarbeiten.
MC-Web