ugrás a tartalomhoz

PHP include elakad az első sornál

Kobra · 2007. Feb. 10. (Szo), 15.14
használok egy nagyon egyszerű includot, de most valami ért el akad az első sornál:

<?php
                if(##kukac##is_file($_GET['f'].'.htm')) {
                    include_once($_GET['f'].'.htm');
                    }
                elseif( !($_GET['f']) ) {
                    include_once('hirek.htm');
                    }
                elseif(!file_exists($_GET['f'].'.htm')) {
                    include('404.htm');
                    }
mit csesztem el?
meg lehet vhogy oldani, hogy adott divbe tudjak így beolvasni?
 
1

Így NE!

vbence · 2007. Feb. 11. (V), 14.43
Több sebből vérzik a cuccos, de főleg biztonsági szampontból: nem include-olunk észnélkül bármit, amit a usertől kapunk. Másodsorban pedig ha html fájlokról van szó, miért az include-ot használod, miért nem a (lénygesen biztonságosabb) readfile-t?

Arról nem is beszélve, hogy miért a "once"?

Ha ezeken túl vagy, ellenőrizd egy echo-val, hogy tényleg ott van-e a GET-ben az "f" változó, meg hogy a PHP aktuális könyvtára getcwd éppen az-e ahonnan be szeretnéd olvasni a html fájlokat.

Ebben a topicban részletesen kiveséztük az ilyen keret+include alapú oldalfelépítést.
2

majd még tanulok

Kobra · 2007. Feb. 14. (Sze), 18.14
eredetileg php oldalakat hívott meg csak itt kellett volna HTML-t.
az ajánlott témát átnézem, köszi
3

Ezt azért tényleg nem kéne

dzsoni · 2007. Feb. 14. (Sze), 19.48
Volt szerencsém visszakeresni az okát egy szerver feltörésének, amihez ez a kódolási hiba és a szerver nagylelkűen laza beállítása együtt vezetett. Pontosan egy paraméterben kapott változót gondolkodás nélkül be-include-olt az illető, de sajnos az fopen nem volt tiltva, így a betörő egy külső oldalról a saját svájci bicska tudású php scriptjét inklúdolta be. Nagyon meghökkentő volt, ahogy csili-vili felületen keresztül mindent meglehetett csinálni a szerverrel. Helyi és mysql jelszavak fájlok, ajtó ablak nyitva volt. Emellett rootkittet is tudott telepíteni, félelmetes. Soha ne bízz a paraméterben kapott változóban. Használj pregmatch-et, switch-caset, de semmi képpen ne includold be direktben.