Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] index.php z domyslną załadowaną podstroną
Forum PHP.pl > Forum > Przedszkole
Forti
Witam serdecznie!

PHP uczę się od dzisiaj można powiedzieć. Zamierz rozbudowywać swoją stronę w oparciu własnie o ten język.
I niestety, już pierwszego dnia muszę zadać pytanie na forum. Szukałem odpowiedzi, jednak nawet nie wiem do końca gdzie i jak jej poszukiwać.

Mam na stronie pewne menu:
<li><a href="index.php?inc=news">Aktualne</a></li>
<li><a href="index.php?inc=zzz">plik nie istniejący</a></li>

następnie posiadam taki o to krótki strypcik:

<?PHP


@$strona=$_GET['inc'];

if (file_exists('inc/'.$strona.'.php'))
include('inc/'.$strona.'.php');
else
include('inc/error.php');


?>

I myślę, że nie którzy już wiedzą o co mi chodzi. Gdy klikamy w link, który ma załadować nie istniejący w plik w miejscu $strona, pojawia nam się strona nazwana error.php. Do tego momentu działa to idealnie. Jednak gdy wpiszę swój adres, sam, pojędynczy index.php ładuje mi stronę error.php - co oczywiście wynika ze skryptu, wszystko działa prawidłowo.

Chciałbym to rozwiązać w taki sposób, aby domyslnie samo index.php ładowało się wraz z news.php, a dopiero po wybraniu nie istniejącego linku index.php?inc=zzz ładowało domyslnie error.php.

Przyznam szczerze, próbowałem różnych metod, jednak wszystko bezskutecznie.

Pozdrawiam
Forti
mar1aczi
Np.
Kod
@$strona=$_GET['inc'];

if (isset($_GET['inc'])) {
    if (file_exists('inc/'.$strona.'.php'))
        include('inc/'.$strona.'.php');
    else
        include('inc/error.php');
}
else {
    //załaduj stronę główną
    $strona="news";
    include('inc/'.$strona.'.php');
}
adeptofvoltron
używaj tagów php na forum

Skorzystaj z funkcji empty oraz isset

  1. isset($_GET['inc']) and !empty($_GET['inc'])


isset zwraca czy zmienna istnieje czy nie.
!empty zwróci ci true jeśli zmienna bedzie miała sensowną wartość.

@edit:
to co napisał przedmówca nie zadziała poprawnie jak ktoś wyśle zapytanie na adres
"index.php?inc="
bo zmienna $_GET['inc'] będzie miała wartość pustego łańcucha, ale będzie zadeklarowana.
Forti
Rozwiązanie mar1aczi również próbowałem. Działa dobrze ale często wywala błąd i bez powodu pokazuje stronę error.php nawet gdy link jest prawidłowy.

Z tym esset i empty muszę poczytać, szczerze to nie wiem jak to umiejscowić w kodzie.
mar1aczi
Cytat(adeptofvoltron @ 4.05.2014, 19:39:54 ) *
@edit:
to co napisał przedmówca nie zadziała poprawnie jak ktoś wyśle zapytanie na adres
"index.php?inc="
bo zmienna $_GET['inc'] będzie miała wartość pustego łańcucha, ale będzie zadeklarowana.

i zadziała funkcja file_exists, a że pliku nie ma to zostanie załadowany "error.php", smile.gif czy się mylę?
adeptofvoltron
mar1aczi przepraszam. masz rację.

forti to jakie ci blędy sypie?
Forti
hm... faktycznie, twój schemat działa prawidłowo. Szybciej wyskakiwał błąd po wpisaniu index.php?inc=. Dzięki za pomoc, widać dużo muszę się nauczyć jeszcze, a już ambicje mam na system logowania i uprawnień do dodawania i komentowania 'newsów'.


@adeptofvoltron

po wpisaniu index.php?inc= a następnie wybraniu linku istniejącego wywalało error.php, jednak kolega chyba coś zmienił w kodzie, obecna forma działa prawidłowo z funkcją isset i file_exists.
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.