Krzychur
18.01.2004, 10:22:37
To mój dotychczasowy kod aby adresik byl z ? i z ID=:
[php:1:d7353f0d9d]<?php
if ($_GET['ID'] =="")
include ("strona_glowna.php"); // to dla strony bez id
else
include ($_GET['ID'].".php"); // to dla pozostalych
?>[/php:1:d7353f0d9d]
Dowiedziałem się od nikogo (nobody) że można do id dodać adres z jakimś skryptem z rozszerzeniem php i w zaleznie co o za skrypt moze mi rozwalic stronke. Skrypt taki co ,,zamyka to dziure'' to:
[php:1:d7353f0d9d]<?php
if(!file_exists("./".$_REQUEST['dzial'].".php")){
include('./glowna.php');
}
else{
include("./".$_REQUEST['dzial'].".php");
}
?> [/php:1:d7353f0d9d]
Czy ktoś mógłby mi pomóc wyjąsnić jakie tu są znaczniki albo najlepiej przerobić tak, aby w adresie po ID= nazwie pliku było rozszerzenie czyli nie zeby skrypt sam je dodawal niewidocznie bo chce zaloczyc tez inne pliki, aby domyslnie ladowala sie strona main.php a inne strony zeby adres wygladal mniejwiecej tak http://krzychur.piwko.pl/index.php?ID=author.php a jezeli probojemy dac tam jakiegos niewiadomego linka po ID= albo po prostu gdy dana strona nie istnieje aby ladowal sie plik index.php?ID=error.php
Z góry dzieki!
FiDO
18.01.2004, 10:56:55
Mozesz zrobic cos takiego:
[php:1:a7204ba9e3]<?php
/* lista dozwolonych stron */
$strony = array("newsy.php",
"costam.php",
"costam2.php");
/* ustawiamy strone domyslną, kiedy ID nie jest podane */
if (empty($_GET['id']))
$_GET['id'] = $strony[0];
/* jesli podane ID jest jedna z dozwolonych wartosci to includujemy ta strone */
if (in_array($_GET['id'],$strony))
{
include ($_GET['id']);
}
else /* w przeciwnym wypadku pokazujemy błąd */
{
include ('error.php');
}
?> [/php:1:a7204ba9e3]
Krzychur
18.01.2004, 11:15:03
a nie dalo by sie tego zrobic tak bez $strony poniewaz troche by wazyl ten dokument jakbym wypisal wszystkie strony...
CyklOP
18.01.2004, 11:38:13
Można też tak (chyba):
[php:1:2e23a98443]<?php
$go=$HTTP_GET_VARS['go'];
if (file_exists("inc/".$go.".inc"))
include("inc/".$go.".inc");
else
echo("nic nie ma takiego");
?>[/php:1:2e23a98443]
?
Krzychur
18.01.2004, 11:46:10
Dobra mamy ten kod ale jak zrobic aby byl on taki jak napisalem w 1 poscie nie wpisujac wszystkich stron z serwisu...
---------zmieniony-----------
[php]<?php
$go=$HTTP_GET_VARS['go'];
if (file_exists("inc/".$go.".inc"))
include("inc/".$go.".inc");
else
echo("nic nie ma takiego");
?> [/php
Czy tutaj po prostu zamiast ID jest go i tam w if (file_exist... to folder inc i rozszerzenie inc?? czyli po prostu zmienie tam dla siebie na .$ID. i w include dam .$go. a w elsce dam include("index.php?ID=error.php");
nobody
18.01.2004, 12:03:16
[php:1:16ff90884d]<?php
# definiowanie katalogu, z ktorego beda includowane pliki
define("INC_DIR", ".");
# (php|inc|txt) z ponizszej linijki sprawdza czy plik ma takie wlasnie rozszerzenia, ogranicza to zakres includowanie plikow
# sprawdzana jest nazwa pliku - moze sie skladac z liter a-z A-Z cyfr 0-9 . - _
if(file_exists(INC_DIR."/".$_GET['ID'])&&ereg("^[a-zA-Z0-9.-_]+.(php|inc|txt)$", $_GET['ID'])){
include(INC_DIR."/".$_GET['ID']);
}else{
# wybierz sobie ktory sposob wyswietlania bledow Ci odpowiada i usun z tej linijki znak #
# print "Nie ma takiego pliku lub nie masz uprawnien do otwierania plikow o takim rozszerzeniu!";
include("error.php");
# header("Location: error.php");
}
?>[/php:1:16ff90884d]
Krzychur
18.01.2004, 12:15:02
zaraz spawde czy dziala a nobody czasem nei masz tlena lub gg?
---zmieniony------
a nie dalo by sie zamist ustawiac nazwy plikow aby nie dalo sie wpisac tam http po id??
nobody
18.01.2004, 12:22:58
Wpisanie
http://costam nic nie da bo:
- pliki sa includowane z bierzacego katalogu: ./nazwa_pliku
- nazwy plikow musza sie skladac z liter duzych, malych, cyfr i tych paru znakow wiec jak ktos nawet wpisze ID=folder/index.php to skrypt wywali blad.
Includowac mozesz z katalogu, ktory zdefiniowales pliki o ustalonych rozszerzeniach.
Krzychur
18.01.2004, 12:30:36
Dzieki nobody wprawdzie sam na to wpadlem bo wyslalem tam juz ten skrypt. Pomyliles sie raz bo tam gdzie bylo # print na koncu niepowinno byc srednika ale trudno naprawilem 3x pomogl # dobrze macie ze mna... sprawdzilem wyszstko juz dziala. jeszcze raz dzieki!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.