Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dołączanie plików typu index.php?strona=x
Forum PHP.pl > Forum > Przedszkole
Mefiuu
Witam. Przeczytałem temat o PHPEDII, żeby ją przeczytać. Szczególnie zainteresowało mnie to zagadnienie co w temacie, a mianowicie : "Dołączanie plików typu index.php?strona=x". W PHPEDII rzeczywiście jest taki artykuł, jednak nie jest on opisany ^^ . Czy ktoś mógłby mi podać jakiś link albo wytłumaczyć "jak to się robi" ? w google'ach nic nie znalazłem...
golaod
Odsyłamy do php.net/include smile.gif
Zawiej
hmmm czy o to Ci może chodzi ?


Jest wiele możliwości użycia PHP do zarządzania linkami na stronie, teraz podam jeden sposób, który wydaje mi się jest bardzo prosty i przyjemny w stosowaniu.

Zmieniamy nazwe naszego index.html na index.php, w miejscu gdzie mają być otwierane działy wklejamy kod:

  1. <?php
  2.  
  3. if(isset($dzial)){
  4.  
  5. if(file_exists($dzial.".php")){
  6.  
  7. $plik = $dzial.".php";
  8.  
  9. include($plik);
  10.  
  11. }else{
  12.  
  13. echo "Wystąpił błąd - brak pliku";
  14.  
  15. }
  16.  
  17. }else{
  18.  
  19. include("newsy.php");
  20.  
  21. }
  22. ?>
Ten oto kod odpowiada za wciąganie wartości z plików do naszego index’u - jest to tak zwane includowanie,
w skrócie dzięki temu kodowi otierają nam się działy w naszym index’e.
Warto podkreślić, że po wciągnięciu działu do index’u nie zmieniamy
pliku, nadal jestesmy w index.php, jednak zmieniliśmy jego zawartość.

Zobaczcie na szóstą linijke od końca, zawiera ona kod:
echo “Wystąpił błąd - brak pliku”;
odpowiada on za wyświetlenie komunikatu “Wystąpił błąd - brak pliku” gdy plik nie zostanie odnaleziony w danym miejscu.

Link, który pozwala nam wciągnąć zawartośc pliku do index’u powinien wyglądać następująco.

<a href=”index.php?dzial=scieża do pliku”>dowolny tekst</a>

scieża do pliku - ten element należy już do Ciebie, jeżeli powiedzmy plik auto.php leży w tym samym folderze co index.php to ścieżka do niego wyglądać będzie “index.php?dzial=auto”

W tym przypadku nie podajemy rozszerzenie .php, tak został napisany mechanizm pobierania kodu żeby nie wolno podać rozszerzenia.

Na konieć trzeba dodac, że index.php powinien mieć chmody ustawione na 666 a pliki, które “zostają wciągane” do index’u nie powinny zawierać takich elementów jak: HTML, HEAD, BODY - ze względów kosmetycznych. W końcu zostaną one wciągnięty w środek index.php.


Źródło: webdiary.pl
Spawnm
a o LFI to pan słyszał ?
Wicepsik
  1. <?php
  2. if (!empty($_GET['id'])) {
  3.        $name = urldecode($_GET['id']);
  4.        $reg = '/^[a-zA-Z0-9]+$/';
  5.        if (preg_match($reg, $name)) {
  6.            if (file_exists($name.'.php')) {
  7.                include($name.'.php');
  8.            }else{
  9.                echo '<center>Plik nie istnieje!</center>';
  10.            }
  11.        }else{
  12.            echo 'Niedozwolone znaki w nazwie pliku';
  13.        }
  14.    }else{
  15.        include('news.php');
  16.    }
  17. ?>
Mefiuu
Witam ponownie. Poczytałem to i owo i zrobiłem rzecz następującą. Stworzyłem plik index.php (proszę nie patrzeć na układ strony na tabelkach i brak DOCTYPE'a - to jest strona próbna):


Kod
<html>
<head>
<title>Tytuł mojej strony</title>
</head>
<body>
<table cellpadding="0" cellspacing="0" width="100%" border="1">
<tr><td colspan="3">LOGO</td></tr>
<tr>
<td>
<?
include"lewe.inc";
?>
</td>
<td>

<? if(!isset($show)) {
include"newsy.inc"; }
else if ($show=='1') {
include"texty.inc"; }
else if($show=='2') {
include"php.inc"; }
else {
echo("Nie ma takiej strony"); } ?>

</td>
<td>
<?
include"prawe.inc";
?>
</td>
</tr>
<tr><td colspan="3">STOPKA</td></tr>
</body>
</html>


a następnie wszystkie wymienione w kodzie pliki, czyli prawe.inc, lewe.inc itd. Na lewe.inc miało być menu główne. Wklepałem tam linki, czyli:
Kod
<center>
MENU NAWIGACYJNE
</center>
<a href="index.php?show=1">Texty</a>
<a href="index.php?show=2">PHP</a>


No i po kliknięciu w obojętnie jaki link następuje przeładowanie strony, w pasku adresu ukazuje się adres mojastronadomowa.pl/index.php?show=2lub inny, tyle że nie wczytuje mi danych z pliku php.inc tylko zostają te dane z pliku newsy.inc . Dlaczego tak się dzieje ?

Witam ponownie. Poczytałem to i owo i zrobiłem rzecz następującą. Stworzyłem plik index.php (proszę nie patrzeć na układ strony na tabelkach i brak DOCTYPE'a - to jest strona próbna):


Kod
<html>
<head>
<title>Tytuł...</title>
</head>
<body>
<table cellpadding="0" cellspacing="0" width="100%" border="1">
<tr><td colspan="3">miejsce na logo</td></tr>
<tr>
<td>
<?
include"lewe.inc";
?>
</td>
<td>

<? if(!isset($show)) {
include"newsy.inc"; }
else if ($show=='1') {
include"texty.inc"; }
else if($show=='2') {
include"php.inc"; }
else {
echo("Nie ma takiej strony"); } ?>

</td>
<td>
<?
include"prawe.inc";
?>
</td>
</tr>
<tr><td colspan="3">Podpis pod stroną</td></tr>
</body>
</html>


a następnie wszystkie wymienione w kodzie pliki, czyli prawe.inc, lewe.inc itd. Na lewe.inc miało być menu główne. Wklepałem tam linki, czyli:
Kod
<center>
MENU NAWIGACYJNE
</center>
<a href="index.php?show=1">Texty</a>
<a href="index.php?show=2">PHP</a>


No i po kliknięciu w obojętnie jaki link następuje przeładowanie strony, w pasku adresu ukazuje się adres mojastronadomowa.pl/index.php?show=2lub inny, tyle że nie wczytuje mi danych z pliku php.inc tylko zostają te dane z pliku newsy.inc . Dlaczego tak się dzieje ?
Wicepsik
  1. <? if(!isset($_GET['show'])) {
  2. include"newsy.inc"; }
  3. else if ($_GET['show'])=='1') {
  4. include"texty.inc"; }
  5. else if($_GET['show'])=='2') {
  6. include"php.inc"; }
  7. else {
  8. echo("Nie ma takiej strony"); } ?>
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.