konto usunięte

Temat: czemu to nie działa na nazwa.pl

Wszystko działało mi lokalnie na kompie, jednak po zrzuceniu zaczęły się schody i nie działa jak powinno. Gdzie jest błąd?

<?PHP

$path="ścieżka na serwerze";

if (file_exists("$path/$id.php"))
{
include("$path/$id.php");
}
else{
include("$path/main.php");
}

?>
Wojciech K.

Wojciech K. realizator pomysłów
własnych

Temat: czemu to nie działa na nazwa.pl

$path="ścieżka na serwerze";

tu i tylko tu :)
u większości szanujących się providerów przede wszystkim jesteś "chrootowany" tylko do własnego katalogu - czyli ścieżka powinna wyglądać np. tak: "/httpdocs" albo wręcz tak: "" ;)

jeśli includowany plik znajduje się w tym samym katalogu, co plik go wywołujący, najlepiej i najszybciej (php nie błądzi wtedy po
katalogach) zrobić tak: "./nazwapliku.php"

edit: zapomniałem jeszcze o jednym - normalką bywa, że provider wyłącza dostęp do pewnych funkcji - szczególnie takich, jak exec(), ale bywa, że i do file_exists()Wojciech K. edytował(a) ten post dnia 29.01.10 o godzinie 23:49

Temat: czemu to nie działa na nazwa.pl

Wojciech K.:

edit: zapomniałem jeszcze o jednym - normalką bywa, że provider wyłącza dostęp do pewnych funkcji - szczególnie takich, jak exec(), ale bywa, że i do file_exists()[edited]Wojciech K.

Nie wiem, jak exec, ale file_exists na nazwie działa, bo bo nieraz używałem. Stawiam na konieczność użycia ścieżki względnej w stosunku do pliku wywołującego.

konto usunięte

Temat: czemu to nie działa na nazwa.pl

zrobiłem mały test i okazuje się, że ten serwer nie łapie zmiennej w ogóle... zrobiłem test z echo i dostałem .php zamiast nazw_pliku.php.

konto usunięte

Temat: czemu to nie działa na nazwa.pl

Od razu nie łapie, po prostu jest pusta.

Na początku, przed IF'em daj takie coś
$id = $_GET['id'];
Maciej Derewecki

Maciej Derewecki administracja i
zarządzanie
SharePoint

Temat: czemu to nie działa na nazwa.pl

A dla bezpieczeństwa dodaj jeszcze
$id = intval($_GET['id']);

Temat: czemu to nie działa na nazwa.pl

Maciej Derewecki:
A dla bezpieczeństwa dodaj jeszcze
$id = intval($_GET['id']);

A jeśli ID nie jest liczbą tylko zwykłym tekstem? Nie wiemy, jakie wartości w rzeczywistości przyjmuje ta zmienna i to bezpieczeństwo bardziej zaszkodzi niż pomoże. Ogólnie dla bezpieczeństwa faktyzcnie lepiej sprawdzić poprawność zmiennej, ale nie w ten sposób.
Maciej Derewecki

Maciej Derewecki administracja i
zarządzanie
SharePoint

Temat: czemu to nie działa na nazwa.pl

Może i tak, ale po pierwsze ID kojarzy się z liczbą, stąd moja rada, a po drugie nie powinno się includować pliku o nazwie pobranej bezpośrednio ze zmiennej $_GET. W przypadku liczb jest to najłatwiejszy i podstawowy sposób.

Temat: czemu to nie działa na nazwa.pl

Zgadzam się dwukrotnie (że ID kojarzy się z liczbą i nie powinno się includować bezpośrednio z GET). Ale założyłem też, że nazwa pliku nie jest liczbą. Być może Marek jest na tyle dobrym programistą, że zrozumie Twoją sugestię odnośnie bezpieczeństwa, ale jeśli skorzysta z tego jakiś początkujący, to będzie miał nie lada orzech do zgryzienia :)

Ale wracając do tematu. Skro Marek pisze, że lokalnie u niego to działało, to chyba jednak zmienna $id miała jakąś wartość. Pytanie więc, skąd ją odczytywał lokalnie. Być może właśnie ta funkcja sprawia problem na serwerze? Np. inna wersja PHP, w której niektóre funkcje nieco się zmieniły.

konto usunięte

Temat: czemu to nie działa na nazwa.pl

hmm nazwa pliku nie jest liczbą.. w każdym razie zapomniałem jak dawno temu miałem serwer gdzie właśnie musiałem korzystać $_GET bo inaczej nie działały zmienne. Skleroza :)

Serwer Apache jaki ma u siebie nie robił mi na kompie problemów.
w każdym razie już śmiga.Mariusz Piotr Tyszkowski edytował(a) ten post dnia 30.01.10 o godzinie 20:37

konto usunięte

Temat: czemu to nie działa na nazwa.pl

Andrzej K.:
Np. inna wersja PHP, w której niektóre funkcje nieco się zmieniły.

Starczy inna konfiguracja - co zresztą autor wątku potwierdził.
Michał Jarosz

Michał Jarosz Frontend Developer &
Team Leader

Temat: czemu to nie działa na nazwa.pl

Mariusz Piotr Tyszkowski:
hmm nazwa pliku nie jest liczbą.. w każdym razie zapomniałem jak dawno temu miałem serwer gdzie właśnie musiałem korzystać $_GET bo inaczej nie działały zmienne. Skleroza :)

Serwer Apache jaki ma u siebie nie robił mi na kompie problemów.
w każdym razie już śmiga.Mariusz Piotr Tyszkowski edytował(a) ten post dnia 30.01.10 o godzinie 20:37

http://php.net/manual/en/security.globals.php

konto usunięte

Temat: czemu to nie działa na nazwa.pl

Michał Jarosz:

http://php.net/manual/en/security.globals.php

też uwazam, ze opcja z wędką zamiast rybki jest lepsza

http://www.owasp.org/index.php/Main_Page

Następna dyskusja:

Mod_rewrite - jest, a nie d...




Wyślij zaproszenie do