Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] INCLUDE - adresowanie bezwzględne
Forum PHP.pl > Forum > Przedszkole
husky83
Witam exclamation.gif
W skrócie mój problem wygląda tak: chcę pewien plik w katalogu 'katalog' includować raz ze strony głównej, raz z samego katalogu 'katalog' itd..
Co zrobić, (i czy wogóle można) zebym mógł stosować adresowanie bezwzględne, czyli zawsze od 'samej góry'. Wtedy nawet jeśli wywołam plik bezpośrednio (a on będzie wywoływał kolejny w tym samym katalogu) bez względu na to skąd go będę wywoływał..

Nie wiem czy dobrze to opisałem winksmiley.jpg

w ogromnym skrócie:
nawet w pliku znajdującym się w katalogu, np. katalog/plik.php
aby móc zaincludować plik żebym musiał wpisać 'katalog/plik2.php', a nie samo plik2.php
kossa
Najprościej można tak: http://www.TwojAdres.pl/katalog/inludowany_plik.php i powinno być ok :-)

Możęsz też sprawdzać aktualny adres skryptu i w zależności od tego gdzie sie znajdujesz to przez ścieżką dodawać katalog nadrzędny lub nie.

Pozdrawiam,
Łukasz
dawhol
  1. <?php include('../katalog/plik2.php'); ?>


niewiem czy o to ci chodzilo smile.gif bo troche niezrozumiale napisales jak dla mnei o co ci chodzi smile.gif
husky83
Cytat(dawhol @ 24.07.2006, 20:41 ) *
  1. <?php include('../katalog/plik2.php'); ?>


niewiem czy o to ci chodzilo smile.gif bo troche niezrozumiale napisales jak dla mnei o co ci chodzi smile.gif


W tym problem, że to nie działa do końca tak jak powinno..

wiem ze nie zrozumiale, mam taki talent do komplikowania najprostszych rzeczy:P

ale to co napisał kossa powinno być dobrze smile.gif
kossa
ja zapomnialem doać do przykładowego linku kodu, wieć już się poprawiam :-)

  1. <?php
  2. include("http://www.TwojAdres.pl/katalog/inludowany_plik.php");
  3. ?>


ale myślę że wszystko było jasne :-)

powodzenia!
Kossa
wolguy
myślę, że pomysł kossa nie przejdzie, bo przy includowaniu przez http plik przejdzie przez parser php i otrzymamy tzw. grzyby biggrin.gif
kossa
najprościej jest to prztestować :-) ja już mam za mało siły

już dziś nie myśle, upały wykanczają, a jak się jest od rana w takiej saunie w pracy na pełnych obrotach... uff jak gorąco

Kossa
freeloader
Cytat(wolguy @ 24.07.2006, 21:59 ) *
myślę, że pomysł kossa nie przejdzie, bo przy includowaniu przez http plik przejdzie przez parser php i otrzymamy tzw. grzyby biggrin.gif



A dlaczego mialoby nie dzialac ?
Bedzie dzialac bez problemow, include dokleja plik bez parsowania, a dopiero pozniej parsuje, jednak trzeba pamietac, ze dokleja w trybie czystego tekstu, wiec jezeli ma tam byc np. jakas funkcja to trzeba ja ujac w <?php i ?>.
Co do includowania innych stron - wszystko bedzie dobrze jak sie do sekcji meta doda :
<base href="http://includowana_strona">, zeby wszystkie odnosniki wzgledne wiedzialy do czego sie odwolac.
freeloader
Cytat(wolguy @ 24.07.2006, 21:59 ) *
myślę, że pomysł kossa nie przejdzie, bo przy includowaniu przez http plik przejdzie przez parser php i otrzymamy tzw. grzyby biggrin.gif



A dlaczego mialoby nie dzialac ?
Bedzie dzialac bez problemow, include dokleja plik bez parsowania, a dopiero pozniej parsuje, jednak trzeba pamietac, ze dokleja w trybie czystego tekstu, wiec jezeli ma tam byc np. jakas funkcja to trzeba ja ujac w <?php i ?>.
Co do includowania innych stron - wszystko bedzie dobrze jak sie do sekcji head doda :
<base href="http://includowana_strona">, zeby wszystkie odnosniki wzgledne wiedzialy do czego sie odwolac.
Gość
Sorry, nie moge edytowac - dobra jest 2 wypowiedz - chodzi o dodanie do head, a nie meta.
husky83
niestety pomysł z pełnym adresem nie przeszedł - nie widać funkcji z includowanego pliku..
poszedłem troszkę okrężną drogą, ale najważniejsze, że działa.. mogę bezpośrednio wywołać skrypt z głównego katalogu jak i spod katalogu w którym się znajduje..
  1. <?php
  2. if (file_exists("katalog/config.php"))
  3. include_once("katalog/config.php");
  4. else // w razie, jeśli w katalogu głównym jest też config.php - zeby już go nie includował, jeśli był w katalog/config.php
  5. if (file_exists("config.php"))
  6. include_once("config.php");
  7. ?>


Wprawdze nie jest to to, czego potrzebowałem, ale ważne że działa ;]
bigZbig
Panowie a nie prosciej zrobic cos takiego?
W pliku common.php
  1. <?php
  2. if (!defined('COMMON_DIR')) define('COMMON_DIR',dirname(__FILE__));
  3. // stala wskazuje sciezke dla pliku common.php
  4. // polozenie pozostalych plikow okreslasz wzgledem pliku common.php
  5. include(COMMON_DIR.'/config.php');
  6. include(COMMON_DIR.'/includes/functions.php');
  7. ?>


Teraz plik common.php mozesz inkludowac w dowolnym innym pliku, a on zawsze poprawnie dołączy pozostale pliki.
Aure
Nieco offtopicowo, ale może komuś przydać się to drobne sprostowanie winksmiley.jpg
Cytat(kossa @ 24.07.2006, 22:38 ) *
Najprościej można tak: http://www.TwojAdres.pl/katalog/inludowany_plik.php i powinno być ok :-)

IMHO bezsensowne, w jaki sposób miałoby to działac? Według Twojego pomysłu mógłbym sobie zrobić np.

  1. <?php
  2. include('http://www.phpbb2.pl/config.php');
  3. ?>

i zdobyć dane dostępowe do bazy... Byłaby to poważna luka w działaniu serwerów www i raczej nikt normalny nie zdecydowałby się na wdrażanie takiej funkcjonalości.

Manual php wypowiada się jasno na ten temat, jest to możliwe ale działa zupełnie inaczej niż klasyczne includowanie:
Cytat
Jeśli "URL fopen wrappers" są włączone w php (takie jest domyślne ustawienie) można podać nazwę pliku do wczytania używając adresu URL (przez protokół HTTP lub innym obsługiwanym sposobem - zajrzyj do Dodatek M aby zapoznać się z listą obsługiwanych protokołów), zamiast podawać ścieżkę lokalną. Jeśli podany w adresie serwer interpretuje plik docelowy jako kod php, można do tego skryptu przekazać zmienne w taki sam sposób jak przy metodzie GET protokołu HTTP. Ściśle mówiąc, nie jest to to samo, co wczytywanie pliku lokalnego; jest to wykonanie pliku na zdalnym serwerze i wklejenie rezultatu jego działania do skryptu wywołującego. W tym przypadku, rzecz jasna, zasięg globalny zmiennych nie obejmuje pliku wczytywanego tą metodą.
kossa
Cytat(Aure @ 25.07.2006, 10:56 ) *
IMHO bezsensowne, w jaki sposób miałoby to działac?


Masz w zupełności rację, chyba nie przemyślałem zbyt dobrze swojej odpowiedzi, wczoraj 16h w pracy przed kompem w upale dało się we znaki, umysł już nie pracował jak powinien.

Wstyd i skrucha.

Łukasz
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.