power-box.de
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 11.01.2006, 20:32   #1
TP-Veteran
 
Benutzerbild von alexf812
 
Registriert seit: Sep 2004
alexf812 macht alles soweit korrekt

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?
alexf812 ist offline   Mit Zitat antworten


Alt 11.01.2006, 23:59   #2
TP-Specialist
 
Benutzerbild von rewboss
 
Registriert seit: Mar 2005
Ort: Unterfranken
rewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKE
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.
rewboss ist offline   Mit Zitat antworten
Alt 12.01.2006, 11:41   #3
TP-Member
 
Benutzerbild von -Andi-
 
Registriert seit: Aug 2005
-Andi- macht alles soweit korrekt
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
-Andi- ist offline   Mit Zitat antworten
Alt 12.01.2006, 12:41   #4
Fex
TP-Junior
 
Registriert seit: Jan 2006
Fex ist auf einem guten Weg
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
Fex ist offline   Mit Zitat antworten
Alt 12.01.2006, 17:25   #5
TP-Specialist
 
Benutzerbild von rewboss
 
Registriert seit: Mar 2005
Ort: Unterfranken
rewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKE
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?
rewboss ist offline   Mit Zitat antworten
Alt 12.01.2006, 22:51   #6
DSB
TP-Veteran
 
Benutzerbild von DSB
 
Registriert seit: Mar 2005
Ort: Oyten
DSB ist ein richtiges Arbeitstier - DANKEDSB ist ein richtiges Arbeitstier - DANKEDSB ist ein richtiges Arbeitstier - DANKEDSB ist ein richtiges Arbeitstier - DANKE
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.
__________________
Gruß, DSB
Einfaches Backup/ Restore Deiner MySQl-Datenbank
DSB ist offline   Mit Zitat antworten
Alt 12.01.2006, 23:14   #7
TP-Specialist
 
Benutzerbild von rewboss
 
Registriert seit: Mar 2005
Ort: Unterfranken
rewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKE
Zitat:
Zitat von DSB
Soweit ich weiß funktioniert file_exists($_GET['page']) auch über HTTP-Verbindungen.
Nur wenn allow_url_fopen aktiviert ist.
rewboss ist offline   Mit Zitat antworten
Alt 12.01.2006, 23:21   #8
DSB
TP-Veteran
 
Benutzerbild von DSB
 
Registriert seit: Mar 2005
Ort: Oyten
DSB ist ein richtiges Arbeitstier - DANKEDSB ist ein richtiges Arbeitstier - DANKEDSB ist ein richtiges Arbeitstier - DANKEDSB ist ein richtiges Arbeitstier - DANKE
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.
__________________
Gruß, DSB
Einfaches Backup/ Restore Deiner MySQl-Datenbank

Geändert von DSB (13.01.2006 um 08:09 Uhr).
DSB ist offline   Mit Zitat antworten
Alt 13.01.2006, 02:07   #9
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
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.
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 13.01.2006, 10:00   #10
TP-Specialist
 
Benutzerbild von rewboss
 
Registriert seit: Mar 2005
Ort: Unterfranken
rewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKErewboss ist ein richtiges Arbeitstier - DANKE
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...)
rewboss ist offline   Mit Zitat antworten
Alt 13.01.2006, 12:17   #11
TP-Veteran
 
Benutzerbild von alexf812
 
Registriert seit: Sep 2004
alexf812 macht alles soweit korrekt
und könnte man das Sicherheitsrisiko nicht ausschalten in dem man

PHP-Code:
file_exists("./".$_GET['page'].'.inc'
schreibt?
alexf812 ist offline   Mit Zitat antworten
Alt 13.01.2006, 13:40   #12
DSB
TP-Veteran
 
Benutzerbild von DSB
 
Registriert seit: Mar 2005
Ort: Oyten
DSB ist ein richtiges Arbeitstier - DANKEDSB ist ein richtiges Arbeitstier - DANKEDSB ist ein richtiges Arbeitstier - DANKEDSB ist ein richtiges Arbeitstier - DANKE
Sobald in der Zeichenkette "http://" vorkommt, wir der Rest davor ignoriert, glaube ich.
Käme auf einen Test an.
__________________
Gruß, DSB
Einfaches Backup/ Restore Deiner MySQl-Datenbank
DSB ist offline   Mit Zitat antworten
Alt 13.01.2006, 13:52   #13
TP-Supporter
 
Benutzerbild von |23|
 
Registriert seit: Feb 2001
Ort: Göttingen
|23| macht alles soweit korrekt
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');
            } 
__________________

----------------------------
Ritter des PNG -Formats
>> Web Security - Angriffsmethoden und ihre Folgen
>> Buffer-Overflows und wie man sich davor schützt
|23| ist offline   Mit Zitat antworten
Alt 13.01.2006, 14:09   #14
DSB
TP-Veteran
 
Benutzerbild von DSB
 
Registriert seit: Mar 2005
Ort: Oyten
DSB ist ein richtiges Arbeitstier - DANKEDSB ist ein richtiges Arbeitstier - DANKEDSB ist ein richtiges Arbeitstier - DANKEDSB ist ein richtiges Arbeitstier - DANKE
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');
__________________
Gruß, DSB
Einfaches Backup/ Restore Deiner MySQl-Datenbank
DSB ist offline   Mit Zitat antworten
Alt 13.01.2006, 14:41   #15
321
TP-Specialist
 
Benutzerbild von 321
 
Registriert seit: Nov 2004
Ort: Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
321 hilft, wo's geht321 hilft, wo's geht321 hilft, wo's geht
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!
321 ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Seitenstruktur Seitenstruktur
« Drop Down Frage | datum beim jahreswechsel »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:03 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.