Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Includebefehl. [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




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 :)

 
BugBite
11-04-2008, 07:12 
 
http://de3.php.net/manual/de/function.file-exists.php
für dein erstes problem

 
unset
11-04-2008, 07:12 
 
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']) {

/*.....*/
?

 
Wyveres
11-04-2008, 09:41 
 
!nimm das was jahlives dir da gepostet hat :)

 
unset
11-04-2008, 09:52 
 
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

 
H2O
11-04-2008, 10:16 
 
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....

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:26 Uhr.