php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.08.2004, 20:09  
Gast
 
Beiträge: n/a
Standard Gibt es eine elegantere lösung

also gib eine eine bessere lösung hierfür
PHP-Code:
<?PHP
$id 
strip_tags($_GET["id"]);
$id str_replace("."""$id);
$id str_replace("/"""$id);

if(
file_exists("content/".$id.".php"))
  include(
"content/".$id.".php");
else
  print(
"Der gewünschte Bereich ist nicht vorhanden");

?>
für sole dateinen zum includen also index.php?id=test

und für diesen
PHP-Code:
<?PHP
$id 
strip_tags($_GET["id"]);
$id str_replace("."""$id);
$id str_replace("/"""$id);

$ordner $_GET['s'];

if(
file_exists("./".$ordner."/".$id.".php"))
  include(
"./".$ordner."/".$id.".php");
else
  print(
"Bereich nicht vorhanden");
?>
aslo für dateinen zum inlcuden index.php?s=ordner&id=test


mfg

Peter
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 25.08.2004, 20:31  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wozu strip_tags() und str_replace()?

wenn du es unbedingt so machen willst, dann bitte auch konsequent und auch auf $_GET['s'] angewendet.
imported_Ben ist offline  
Alt 25.08.2004, 20:36  
Gast
 
Beiträge: n/a
Standard

versteh ich nicht

hättest du eine beseerelösung zum includen von verschieden dateien
 
Alt 25.08.2004, 21:14  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

das reicht meiner ansicht nach vollkommen:
PHP-Code:
<?php

    
if ( isset($_GET['inc']) )
    {
        if ( 
file_exists('content/' $_GET['inc'] . '.php') )
            require 
'content/' $_GET['inc'] . '.php';
        else
            require 
'content/noFileFound.php';
    }
    else
        require 
'content/main.php';

?>
Zitat:
Zitat von Piti
versteh ich nicht
was gibt es daran nicht zu verstehen?

du wendest auf die variable $id bzw. das arrayelement $_GET['id'] die funktionen str_replace() und strip_tags() an.
allerdings verzichtest du im zweiten beispiel darauf dies auch bei $_GET['s'] zu tun.

ich hab nur gesagt, dass ich die anwendung der funktionen für unnötig halte und dass du diese vorgehensweise, wenn du sie denn weiterhin verfolgen willst, auch konsequent auf alle $_GET-variablen anwenden solltest.

hoffe, dass ich das verständlich erklären konnte.

grüße ben.
imported_Ben ist offline  
Alt 25.08.2004, 21:33  
Gast
 
Beiträge: n/a
Standard

aber damit sind dann wieder Zugriffe auf Dateien in einem anderen Verzeichnis möglich

http://mein.serv.er/pfadZumSkript.php?inc=..%2F..%2protected%2Freset
=> $_GET['inc'] = '../../protected/reset'
=> require 'content/../../protected/reset.php'; (ok, höchstens mittelmäßiges Beispiel)
Das muss man ja nicht unbedingt zulassen wollen

Aber Du kannst Dir auch mal http://php.net/basename ansehen.
 
Alt 25.08.2004, 21:35  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@volker:
naja, dein beispiel lasse ich mal außen vor. und warum?
eine halbwegs durchdachte ordnerstruktur sollte doch vorhanden sein.
imported_Ben ist offline  
Alt 25.08.2004, 21:39  
Gast
 
Beiträge: n/a
Standard

@ ben

danke für was ist die datei filenotfound.php
 
Alt 25.08.2004, 21:41  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Piti
für was ist die datei filenotfound.php
naja. für das, was der dateiname schon aussagt.

wenn jemand jetzt die URL in der adresszeile "manipuliert" und statt
Code:
?inc=main
einfach mal
Code:
?inc=tolleSeite
schreibt ...

dann wird diese datei aufgerufen, die dem user dann anzeigt, dass es diese seite nicht gibt.
das ist sowas wie eine billigversion einer 404-errorpage ^^
imported_Ben ist offline  
Alt 25.08.2004, 21:46  
Gast
 
Beiträge: n/a
Standard

@Ben:
na gut, dann halt ein etwas herberes Beispiel...
Code:
blabla.php?inc=..%2F..%2F..%2Fetc%2Fpasswd%00
Das %00 wird zum gefürchteten \0 Zeichen und Du glaubst doch nicht wirklich, dass php das ausfiltert, bevor es die Zeichenkette an die C-Funktion übergibt.
php "merkt sich" die Länge der Zeichenkette; was da drin steht ist dann egal. Die c-api-calls tun das nicht. Beim \0 ist Schluss.
include("../../../etc/passwd\0.php") bindet die Datei passwd ein und nicht passwd.php
Habe ich gerade zur Sicherheit nochmal mit php 5.01 unter win32 und linux ausprobiert.
 
Alt 25.08.2004, 21:49  
Gast
 
Beiträge: n/a
Standard

@ ben ok danke

und wie könnte ich den code für mein 2 bespiel ändern ?


oder ist die Variante dateien zu inlcuden gut oder gibt es bessere ?
 
 


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
ist das so ok oder gibt es eine elegantere Lösung? PHP Tipps 2006 8 27.01.2006 10:10

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php str_replace id, php reicht strip_tags

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:06 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.