php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.02.2006, 19:09  
Gast
 
Beiträge: n/a
Standard ?zeige=index in index.tpl umwandeln?

Hallo.

Ich möchte gerne das wenn im Header "DATEI.PHP?zeige=index" dass er automatisch auf die datei index.tpl zugreift.


Sonst müsste man ja für jede neue Seite den Code wiederholt eintragen und verändern. Aber ich möchte gerne Zeit damit ersparen...


Code:
<?
$zeige=$HTTP_GET_VARS['zeige'];

  if ($zeige=="startseite")
  {
	$content= "content/startseite.html";
	$title= "Startseite";
	include('design/head.tpl');
	include('design/body.tpl');
  }
?>
Den müsste ich dann immerwieder verändern wenn ich eine neue Seite mache. Da ich aber eine Homepage für einen "kunden" mache und dieser sich mit PHP kein bisschen auskennt, möchte ich dass er bloß eine TPL datei erstellen muss, wenn er eine neue Seite reinmacht.

Also, was muss ich ändern??? Ich habe mir mal den wbbliet Code angesehen, und glaube das mir der eval Code ziemlich weiterhelfen kann. Habe schon öfters versucht in auf verschiedene Weisen versucht zu integrieren, was aber immer scheiterte.. Wie genau muss ich das nun machen?


Danke für eure Hilfe jetzt schonmal

- MfG, bd
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 14.02.2006, 19:12  
Gast
 
Beiträge: n/a
Standard

Probiers mal so (Ich hoffe ich habe dich richtig verstanden):
Code:
<? 
$zeige=$HTTP_GET_VARS['zeige']; 
 $content= "content/".$zeige.".tpl";  // oder ".html", Hier muss der Inhalt aber noch ausgelesen werden...
 $title= ucfirst($zeige); 
 include('design/head.tpl'); 
 include('design/body.tpl'); 
?>
Ist aber ein wenig unsicher, da der Benutzer dann auf wirklich jede TPL-Datei zugreifen kann.
 
Alt 14.02.2006, 21:44  
Erfahrener Benutzer
 
Benutzerbild von DER_Brain
 
Registriert seit: 18.04.2005
Beiträge: 1.541
PHP-Kenntnisse:
Fortgeschritten
DER_Brain ist zur Zeit noch ein unbeschriebenes Blatt
Standard

überprüfe dann aber bitte wenigstens, ob es auch eine tpl von dir is...
quasi ein array mit den erlaubten seiten
und dann mit if(in_array(...))...


sonst kann da jeder was anderes reinstellen!
DER_Brain ist offline  
Alt 15.02.2006, 08:30  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Zitat von DER_Brain
überprüfe dann aber bitte wenigstens, ob es auch eine tpl von dir is...
quasi ein array mit den erlaubten seiten
und dann mit if(in_array(...))...


sonst kann da jeder was anderes reinstellen!
ist doch auch blöd so muss jedes mal n Array existieren n file_exists sollte da ausreichen
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.
HStev ist offline  
Alt 15.02.2006, 08:57  
Erfahrener Benutzer
 
Benutzerbild von stefanjann
 
Registriert seit: 02.08.2005
Beiträge: 252
PHP-Kenntnisse:
Fortgeschritten
stefanjann
Standard

Hallo,

je nach Einstellung in der php.ini kann auch ein file_exists() eine Datei auf einen anderen Server bestätigen. Somit ist die Sicherheit mit diesem Script nicht gegeben.

Ein Array mit einer White-List bringt wesentlich mehr sicherheit. Und ob ich jetzt ein
Code:
$array=array("eins","zwei","drei");
if (in_array($needlink,$array))
  {
  ...
  }
oder ein
Code:
if (file_exists($needlink))
  {
  ...
  }
mach ist vom Schreibaufwand echt kein Unterschied, aber von der Geschwindigkeit (kein Zugriff auf das Dateisystem nötig). Und es werden nur Seiten angezeigt die vom Programmierer erlaubt sind.

Weiter empfehle ich eher die Variablen $_GET und $_POST anstatt $HTTP_GET_VARS zu benutzen.

Das Thema Sicherheit und Links über URL wurde schon oft diskutiert. Die Suche hier im Forum gibt mehrfach Auskunft über dieses Thema.

Gruß,
Stefan
__________________
SELECT * benutze ich nur um den Post kurz zu halten.
stefanjann ist offline  
Alt 15.02.2006, 09:24  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Ein Array wäre aber absoluter OVERHEAD man kann mit relativen Pfadangaben und realpath() das Problem was du beschreibst kinderleicht umgehen

PHP-Code:
<?php
define 
("TPL_PATH"realpath("./content/"));
if (
file_exists(TPL_PATH "/" $_GET['zeige'] . ".tpl"))
{
    
// verarbeite Template
}
?>
?>
Zitat:
realpath() expandiert alle symbolischen Links, und beseitigt Verweise zu '/./', '/../' und extra '/' Zeichen im Input path, und gibt den absoluten Pfadnamen kanonisch zurück. Der Pfad im Ergebnis enthält keine Komponenten eines symbolischen Links mehr, wie '/./' or '/../'.
[edit] realpath behält auch den Dateinamen bei man könnte theroetisch den kompletten relativen Pfad übergeben und umwanden und dann testen.
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.
HStev ist offline  
Alt 15.02.2006, 09:42  
Erfahrener Benutzer
 
Benutzerbild von stefanjann
 
Registriert seit: 02.08.2005
Beiträge: 252
PHP-Kenntnisse:
Fortgeschritten
stefanjann
Standard

Hallo,

die Idee mit realpath finde ich gut.

Aber trotzdem sollte man die folgende Regel nie vergessen:

Zitat:
Alle Variablen die von außen ins Script kommen (egal ob $_GET, $_POST, etc) sind böse bis ihre Unschuld bewiesen sind!!!
Hier wird ja über file_exists ein Prüfung durchgeführt, aber mir wäre die direkte Verwendung eines Dateinamens in der URL generell zu unsicher. Hab damit schon schlechte Erfahrungen gemacht. Ich persönlich arbeite lieber mit IDs die dann intern in einen Dateinamen umgewandelt werden. Und mal ehrlich, wie viele Templates hat man den pro Seite das man dafür nicht ein paar Byte Array ausgeben kann.

Ich seh schon wir sind hier wieder bei einer Frage die jeder für sich beantworten muß.

Gruß,
Stefan
__________________
SELECT * benutze ich nur um den Post kurz zu halten.
stefanjann ist offline  
Alt 15.02.2006, 10:01  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Zitat von stefanjann
Hier wird ja über file_exists ein Prüfung durchgeführt, aber mir wäre die direkte Verwendung eines Dateinamens in der URL generell zu unsicher.
Nicht unbedingt, allerdings hat die Realpathmethode einen entscheidenen Nachteil ... relative Pfadangaben nach oben ".." werden genauso behandelt also man muss demnach auch prüfen ob man im richtigen Verzeichnis ist.

Zb. so:

PHP-Code:
<?php
define 
(TPL_PATH"./content/");
$TPL_FILE realpath(TPL_PATH $_GET['zeige'] . ".tpl");

if (    
file_exists($TPL_FILE
        && 
        !(
strpos($TPL_FILErealpath(TPL_PATH)) === false))
{
    echo 
"verarbeite Template";
}
?>
ps: 3x Gleichheitszeichen = Vergleich auf Typengleichheit
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.
HStev ist offline  
Alt 15.02.2006, 10:06  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

basename($_GET['zeige'], '.php') würde ich noch einbauen.
Zergling-new ist offline  
Alt 15.02.2006, 10:11  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Zitat von Zergling
basename($_GET['zeige'], '.php') würde ich noch einbauen.
und was wenn du Unterverzeichnis im Template-Verzeichnis hast?
Willst zb. ...?zeige=navi/test verhindern?
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.
HStev ist offline  
 


Themen-Optionen
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Wie kann ich mein EXCEL Datei in ein SQL umwandeln test022 PHP Tipps 2004 5 29.05.2009 09:09
HTML-Code umwandeln mokus PHP Tipps 2008 5 20.03.2008 17:24
Bilddatei beim Upload automatisch in jpg umwandeln Plague PHP Tipps 2007 5 02.05.2007 11:48
Texteingabe: , in . umwandeln Matthiasnet PHP Tipps 2007 3 05.02.2007 21:48
Codes umwandeln stani PHP Tipps 2006 1 11.11.2006 14:30
EBCDIC in ASCII umwandeln imported_martin PHP Tipps 2006 2 08.04.2006 16:41
[Erledigt] Umwandeln in HTML-Entities ohne Umwandeln der TAGS PHP-Fortgeschrittene 4 26.12.2005 16:17
dd.mm.yyyy umwandeln in yyyy-mm-dd ? Unbekanntes_Pferd Datenbanken 6 07.06.2005 12:15
PDF in html umwandeln JEGO PHP Tipps 2005 2 12.04.2005 15:10
[Erledigt] Pixeldatei in Vektordatei umwandeln? Off-Topic Diskussionen 10 29.01.2005 15:39
Datumsformat umwandeln PHP Tipps 2004-2 2 09.12.2004 14:41
String in Array umwandeln PHP Tipps 2004-2 15 24.11.2004 16:53
2004-10-12 in Zahl umwandeln PHP Tipps 2004 2 12.10.2004 11:48
php-variable in javascipt-variable umwandeln PHP Tipps 2004 1 24.09.2004 16:46
.xls in .sql umwandeln JEGO Datenbanken 4 23.09.2004 10:27

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
tpl in jpg umwandeln, html code zeige inhalt, tpl bild umwandeln, tpl umwandeln, php in tpl umwandeln, von einer index.tpl datei auf einer index.tpl verweißen, tpl verwenden und einbauen php, tpl konvertieren zu jpg, .tpl in php umwandel, unterschied basename realpath, tpl dateien in php umwandeln

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:57 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.