 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
11.01.2006, 20:32
|
#1
|
|
TP-Veteran
Registriert seit: Sep 2004
|
Seitenstruktur
hallo,
mal ne kurze frage.
ab und zu seh ich seiten wo man immer nur eine index datei hat und dann en parameter dran. wenn ich nun eine grosse seite hab, wird das dann immer mit ner riesen switch-anweisung gelöst oder gibts da ne andere lösung?
ist es denn besser immer inde.php?seite=... oder für jedne menüpunkt ne eigne datei? im switch werden ja m.E. auch nur die einzelnen datein eingebunden oder?
|
|
|
11.01.2006, 23:59
|
#2
|
|
TP-Specialist
Registriert seit: Mar 2005
Ort: Unterfranken
|
Es muss kein Switch sein. Es könnte z.B. so aussehen:
PHP-Code:
<?php // Dokument-Head includen include("head.inc");
// Navigation includen include("navigation.inc");
// Inhalt includen if(!isset($_GET['page']) || !file_exists($_GET['page'].'.inc')){ include("index.inc"); } else{ include($_GET['page'].'.inc'); }
// Rest des Dokuments includen include("foot.inc");
?>
Der Vorteil: Stell dir vor, du willst die Navigationsleiste neu gestalten, hast aber 100 Seiten auf deiner Website. Mit dieser Methode brauchst du nur eine Datei zu bearbeiten.
|
|
|
12.01.2006, 11:41
|
#3
|
|
TP-Member
Registriert seit: Aug 2005
|
Zitat:
|
Zitat von rewboss
Es muss kein Switch sein. Es könnte z.B. so aussehen:
PHP-Code:
<?php
// Dokument-Head includen
include("head.inc");
// Navigation includen
include("navigation.inc");
// Inhalt includen
if(!isset($_GET['page']) || !file_exists($_GET['page'].'.inc')){
include("index.inc");
}
else{
include($_GET['page'].'.inc');
}
// Rest des Dokuments includen
include("foot.inc");
?>
Der Vorteil: Stell dir vor, du willst die Navigationsleiste neu gestalten, hast aber 100 Seiten auf deiner Website. Mit dieser Methode brauchst du nur eine Datei zu bearbeiten.
|
Bei einem Switch kann man auch mehrere Seiten einbinden und muss nur noch eine Datei bearbeiten 
|
|
|
12.01.2006, 12:41
|
#4
|
|
TP-Junior
Registriert seit: Jan 2006
|
Hi,
PHP-Code:
include($_GET['page'].'.inc');
solcher Art Konstrukte bergen immer ein gewisses Sicherheitsrisiko!
Besser mit Arrays arbeiten! Spart auch jegliche switch-Anweisungen:
PHP-Code:
<?php
$arrSitePages = array();
$arrSitePages['home'] = 'index.php';
$arrSitePages['topic1'] = 'news/neuigkeiten.php';
$arrSitePages['topic2'] = 'help/hilfe.htm';
if (!isset($_GET['page']) || !file_exists($arrSitePages[$_GET['page']])) {
//wenn nicht vorhanden wird der Variablen '$page' der Wert 'home' zugewiesen;
$page = "home";
} else {
//sonst der Wert des URL-Parameters mit Namen = 'page'
$page = $_GET['page'];
}
include("{$arrSitePages[$page]}");
?>
Gruß Fex
|
|
|
12.01.2006, 17:25
|
#5
|
|
TP-Specialist
Registriert seit: Mar 2005
Ort: Unterfranken
|
Zitat:
|
Zitat von Fex
PHP-Code:
include($_GET['page'].'.inc');
solcher Art Konstrukte bergen immer ein gewisses Sicherheitsrisiko!
|
Deswegen das hier:
PHP-Code:
if(!isset($_GET['page']) || !file_exists($_GET['page'].'.inc')){
include("index.inc");
}
...oder lauert auch da ein Sicherheitsrisiko, das ich noch nicht kenne?
|
|
|
12.01.2006, 22:51
|
#6
|
|
TP-Veteran
Registriert seit: Mar 2005
Ort: Oyten
|
Soweit ich weiß funktioniert file_exists($_GET['page']) auch über HTTP-Verbindungen.
Wenn in $_GET['page'] "http://www.boserBub.com/boesesScript" steht, könnte man so eigenen Code einschleusen.
|
|
|
12.01.2006, 23:14
|
#7
|
|
TP-Specialist
Registriert seit: Mar 2005
Ort: Unterfranken
|
Zitat:
|
Zitat von DSB
Soweit ich weiß funktioniert file_exists($_GET['page']) auch über HTTP-Verbindungen.
|
Nur wenn allow_url_fopen aktiviert ist.
|
|
|
12.01.2006, 23:21
|
#8
|
|
TP-Veteran
Registriert seit: Mar 2005
Ort: Oyten
|
Es kommt halt immer darauf an für wen oder was man programmiert.
Wenn Du immer Zugrif auf die Servereinstellungen hast und Dir sicher sein kannst, dass das nie eingeschaltet wird, bei jedem neuen Script immer an den Zusammenhang denkst und Du nur für Dich programmierst, dann kann man das so machen.
Für z.B. unseren MySQLDumper, der auf vielen verschiedenen Servern läuft, wäre das undenkbar und stellt dann auf manchen Servern ein Sicherheitsrisiko dar. Darauf wollte Fex hinweisen und da hat er prinzipiell recht. 
Geändert von DSB (13.01.2006 um 08:09 Uhr).
|
|
|
13.01.2006, 02:07
|
#9
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
Daher würde ich auch eine Methode mit einem statischen Array vorziehen, wo die gültigen Seiten eingetragen sind, und dann mit in_array() abfragen.
|
|
|
13.01.2006, 10:00
|
#10
|
|
TP-Specialist
Registriert seit: Mar 2005
Ort: Unterfranken
|
Nun ja, allow_url_fopen kann nur durch Bearbeiten von php.ini selbst gesetzt werden, genau aus diesem Grund. Aber es stimmt schon, lieber ganz auf Nummer Sicher gehen. (Es war ja auch nur ein hypothetisches Beispiel...)
|
|
|
13.01.2006, 12:17
|
#11
|
|
TP-Veteran
Registriert seit: Sep 2004
|
und könnte man das Sicherheitsrisiko nicht ausschalten in dem man
PHP-Code:
file_exists("./".$_GET['page'].'.inc')
schreibt?
|
|
|
13.01.2006, 13:40
|
#12
|
|
TP-Veteran
Registriert seit: Mar 2005
Ort: Oyten
|
Sobald in der Zeichenkette "http://" vorkommt, wir der Rest davor ignoriert, glaube ich.
Käme auf einen Test an. 
|
|
|
13.01.2006, 13:52
|
#13
|
|
TP-Supporter
Registriert seit: Feb 2001
Ort: Göttingen
|
Taugt so eine möglichkeit? Ist für eine kleine Seite.
PHP-Code:
switch ($_GET['id'])
{
case 1:
include('home.php');
break;
case 2:
include('company.php');
break;
case 3:
include('products.php');
break;
case 4:
// include('kon.php');
break;
case 5:
// include('imp.php');
break;
case 5:
// include('imp.php');
break;
case 7:
include('login.php');
break;
default:
include('home.php');
}
|
|
|
13.01.2006, 14:09
|
#14
|
|
TP-Veteran
Registriert seit: Mar 2005
Ort: Oyten
|
Funktionieren tut das.
So würde ich es aber eleganter, kürzer und leichter erweiterbar finden:
Code:
$seiten=ARRAY(1=>'home',2=>'company',3=>'products',...);
// existiert die übergebene Seitennummer im Array? Wenn nicht auf "home" setzen
$seitenindex=(in_array($_GET['id'],$seite)) ? $_GET['id']:1;
include($seiten[$seitenindex].'.php');
|
|
|
13.01.2006, 14:41
|
#15
|
|
TP-Specialist
Registriert seit: Nov 2004
Ort: Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
|
Ich prüfe jeweils, dass kein / in 'page' übergeben wird.
Also kein Ordnerwechsel durch den Anwender!
Weiter: bei 'nichtvorhandener Seite' eine kleine 'notfound-Seite' statt 'home'
Kein Muss aber ein Chic 
__________________
[321 Name="Joe"]
wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
[/321]
use my HTML-Tester
Motto'06: Mut zur deutschen Sprache!
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:03 Uhr.
|
 |
 |
![]() | |