Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Skrypt nie dziala serwerze
Forum PHP.pl > Forum > Przedszkole
Blazko
Witam

Mam pewien problem z działaniem strony. Jest w niej skrypt:
Kod
<?
$urls=$id.".txt";
if(file_exists("$urls"))
{
$file = fopen($urls, "r");

echo file_get_contents($urls);

fclose($file);
}
else{
echo file_get_contents("glowna.txt");
}
?>


Skrypcik ten jest do wyswietlania podstron, np. wpisanie www.mojastrona.php?id=podstrona spowoduje wyswietlenia strony z tekstem z pliku podstrona.txt. Generalnie wszystko działa piknie, ale tylko tylko na moim kompie (mam zainstalowany krasnal serv). Gdy wstawiam strone z tym skryptem na serwer własciwy, to skrypt przestaje działac - tzn. zawsze jest załączany plik glowna.txt. Wersja php na serwerze to 4.4.3

Co jest nie tak? Dodam, że na na innym serwerze, tj. webd.pl. skrypt ten działa.
kornel-php
Umieszczasz ten skrypt na jakimś darmowym serwerze?

Np. na cba.pl, czy na 60free.ovh.org nie można wykonać żadnych operaccji na plikach, a tak btw. masz błąd w kodzie przy file_existst(), nazwę zmiennej podajesz bez znaków "", '', tylko w postaci ($zmienna)...
Blazko
Jest to serwer http://dualserv.net/ , wiec raczej chyba dobry.
Poprawiłem ten błąd ze cudzysłowami, ale niewiele pomogło.
Cysiaczek
Dyrektywa register_globals w php.ini Serwery mają na OFF, a Ty masz na On i dlatego nie działa na serwerze.
Poczytaj o $_POST, $_GET etc.
  1. <?php
  2. $urls=$_GET['id'].".txt"; // Tu jest zmiana
  3. if(file_exists("$urls"))
  4. {
  5. $file = fopen($urls, "r");
  6.  
  7.  
  8. fclose($file);
  9. }
  10. else{
  11. echo file_get_contents("glowna.txt");
  12. }
  13. ?>


Na koniec - skrypt jest dziwnie napisany - użycie file_get_contents() do wyświetlania zawartości...questionmark.gif?
aha. Niepotrzebnie otwierasz przez fopen() - wystarczy sama funkcja pobierająca dane z pliku.
aha2. Jest makabrycznie niebezpieczny - brak filtracji danych - zhackowanie tego, to kwestia "chciejstwa" każdego usera.

Pozdrawiam
Blazko
Działa ! Dzieki smile.gif

Czemu file_get_contents jest złym rozwiązaniem? I jak zabezpieczyć to przed shakowaniem?
Cysiaczek
Spróbuj wstawi kod php do takiego pliku i go wykonać. Jest to po prostu makabrycznie nieelastyczne. Co do bezpieczeństwa - jesteś w stanie podać w urlu np coś takiego ?id=../../../etc/shadow i wyświetlić zawartość pliku z hasłami smile.gif

Temat: Bezpieczenstwo skryptow php
Blazko
Czyli include będzie lepsiejsze? snitch.gif
Cysiaczek
Tak. include() jest dużo lepsze, a nawet jest wskazane jego użycie smile.gif
erix
Chyba ktoś zapomniał basename" title="Zobacz w manualu php" target="_manual, nie?

include" title="Zobacz w manualu php" target="_manual/require" title="Zobacz w manualu php" target="_manual użyj wtedy, jeśli chcesz, aby zawarty w pliku kod był przetwarzany przez parser. Jeśli nie, to wtedy możesz spokojnie użyć file_get_contents" title="Zobacz w manualu php" target="_manual, ale ze wspomnianą przeze mnie wyżej funkcją.
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.