Forti
4.05.2014, 18:22:56
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
4.05.2014, 18:37:31
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
4.05.2014, 18:39:54
używaj tagów php na forum
Skorzystaj z funkcji empty oraz isset
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
4.05.2014, 18:49:30
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
4.05.2014, 18:53:12
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",

czy się mylę?
adeptofvoltron
4.05.2014, 18:57:21
mar1aczi przepraszam. masz rację.
forti to jakie ci blędy sypie?
Forti
4.05.2014, 18:57:56
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.