Archiv verlassen und diese Seite im Standarddesign anzeigen : Includebefehl.
ToOFatToFly 11-04-2008, 06:52 Hallo miteinander.
Also es geht darum.
Ich habe ein script
<?php
if (!isset($_GET['go']))
{
include ("home.php");
}
else
{
include ("{$_GET['go']}.php");
}
?>
Nun möchte ich als erstes, dass wen man zb. statt index.php?go=home, index.php?go=blaabla eingibt und die datei blaabla.php nicht existiert es auf die home.php weiterleitet.
2.
möchte ich eine weitere option und zwar...
das wenn ich index.php?go=buildings&ID=betonwerk eingebe, die datei betonwerk.php im ordner buildings geöffnet wird.
sodada, kann mir da jmd helfen?
sry, für rechtschreibfehler^^muss nur zur arbeit :)
http://de3.php.net/manual/de/function.file-exists.php
für dein erstes problem
Schlage die Funktion file_exists nach.
ToOFatToFly 11-04-2008, 07:27 <?php
if (!isset($_GET['go']))
{
include ("home.php");
}
else
{
include ("{$_GET['go']}.php");
}
if ( file_exists )
{
include('home.php');
}
?>
so sieht mein code jetzt aus....
gut, die home.php wird angezeigt. aber ganz oben wird noch dieser fehlertext angezeigt
Warning: include(blablabla.php) [function.include]: failed to open stream: No such file or directory in /var/kunden/webs/ucTools/index.php on line 9
Warning: include() [function.include]: Failed opening 'blablabla.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/kunden/webs/ucTools/index.php on line 9
edit:
jetzt wird die home.php 2mal angezeigt, wenn ich auf index.php?go=home gehe :teach:
MelloPie 11-04-2008, 08:35 1. Du versuchst immernoch zu includieren ohne Prüfung, ob die Datei existiert
2. file_exists ist eine Funktion -> RTFM
Shurakai 11-04-2008, 09:07 $_GET['go'] hat ungeprüft nichts im include verloren!! Das ist ne RIESIGE Sicherheitslücke!
Bitte rausnehmen! Danke.
jahlives 11-04-2008, 09:35 <?php
function allowedInclude($inc){
$allowed = array('home','impressum','karte');
if(count(array_keys($allowed,$inc)) > 0 && file_exists($inc.'php'){
return true;
}else{
return false;
}
}
if (!isset($_GET['go']))
{
include ("home.php");
}
else
{
if(allowedInclude($_GET['go'])){
include($_GET['go'].'php');
}else{
die('Ungültiger Include');
}
}
?>
ToOFatToFly 11-04-2008, 09:39 Original geschrieben von Shurakai
$_GET['go'] hat ungeprüft nichts im include verloren!! Das ist ne RIESIGE Sicherheitslücke!
Bitte rausnehmen! Danke.
also
<?php
switch($_GET['go']) {
/*.....*/
?
!nimm das was jahlives dir da gepostet hat :)
Musst du nicht arbeiten? Was sagt dein Chef wenn du stattdessen rumsurfst ... ;)
ToOFatToFly 11-04-2008, 09:57 Original geschrieben von unset
Musst du nicht arbeiten? Was sagt dein Chef wenn du stattdessen rumsurfst ... ;)
ich arbeite heute mal aus dem Bett, fühl mich nicht wohl (kurzfristig abgesagt) ;)
Ok, hab mal denn Code ausprobiert, kommt die meldung
Parse error: syntax error, unexpected '{' in /var/kunden/webs/ucTools/index.php on line 4
jahlives 11-04-2008, 10:01 <?php
function allowedInclude($inc){
$allowed = array('home','impressum','karte');
if(count(array_keys($allowed,$inc)) > 0 && file_exists($inc.'php')){
return true;
}else{
return false;
}
}
if (!isset($_GET['go']))
{
include ("home.php");
}
else
{
if(allowedInclude($_GET['go'])){
include($_GET['go'].'php');
}else{
die('Ungültiger Include');
}
}
?>
mein Fehler fehlte ne Klammer in der Funktion
Original geschrieben von jahlives
mein Fehler fehlte ne Klammer in der Funktion Soviel sollte er aber schon noch selber herausfinden. Wenn er es nicht sieht, sieht es sicher sein Editor ....
ToOFatToFly 11-04-2008, 10:19 Original geschrieben von H2O
Soviel sollte er aber schon noch selber herausfinden. Wenn er es nicht sieht, sieht es sicher sein Editor ....
nen normaler texteditor :)
Shurakai 11-04-2008, 12:12 Original geschrieben von ToOFatToFly
nen normaler texteditor :) Dann schaff dir mal was vernünftiges an :)
Ich ziehe in diesen Fällen übrigens immer eine switch-Struktur vor, die finde ich da sehr passend.
Anstelle von count(array_keys($allowed,$inc)) könnte man auch einfach in_array verwenden....
|