Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Includowanie do poprzedniego katalogu
Forum PHP.pl > Forum > Przedszkole
NaVarion
A więc tak, powiedzmy że mam takie katalogi:

admin
include
themes

oraz w głównym katalogu pliki, np. index.php, czy register.php

Tak więc w katalogu admin chciałem umieszczać pliki służące do administrowania strony, jednak w nich chcę zainkludować pliki, które są w katalogu include.
Zobaczyłem, jak jest to napisane w Webspellu, i jest tam użyuta opcja "chdir", więc na początku panelu admina wygląda to tak:

  1. <?php
  2. chdir('../');
  3. include(&#092;"_mysql.php\");
  4. include(&#092;"_settings.php\");
  5. include(&#092;"_functions.php\");
  6. chdir('admin');
  7. ?>


zrobiłem podobnie:

  1. <?php
  2. chdir('../');
  3. require(&#092;"include/head.php\");
  4. ?>


jednak nie ładuje mi pliku css, który jest w katalogu: themes/blue/

Wie ktoś, jak zrobić by działało to sprawnie?

Mam nadzieję, że dobrze opisałem problem winksmiley.jpg
ShadowD
Już mówię:
  1. <?php
  2. include('../include/head.php');
  3. ?>


Jeśli chcesz wyjść z katalogu to dajesz ../ a jeśli chcesz wyjść i wejść to ../katalog/plik.rozszerzenie.
NaVarion
Niestety pojawiają się błędy, dlatego też na początku odrzuciłem tą opcję:

Cytat
Warning: main(include/config.php) [function.main]: failed to open stream: No such file or directory in /var/www/sites/yoyo.pl/n/a/.../include/head.php on line 3

Fatal error: main() [function.require]: Failed opening required 'include/config.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/sites/yoyo.pl/n/a/.../include/head.php on line 3

ShadowD
Napisy dokładnie jak wygląda twój plik w miejscu include...

Jeśli masz np:

|-www
|-|-admin
|-|-|-index.php
|-|-include
|-|-|-style.php

I jesteś w index.php to piszesz:

  1. <?php
  2. include('../include/style.php');
  3. ?>


I to musi działać...
NaVarion
O to chodzi?

  1. <?php
  2. include('../include/head.php');
  3. if($_SESSION['user'] || $_SESSION['haslo']) {
  4. echo ''.$_SESSION['user'].', jestes już zalogowany!';
  5. require("../include/foot.php");
  6. }
  7.  
  8. (dalsza część pliku)
  9. ?>
ShadowD
|-include
|-|-style.css
|-admin
|-|-index.php


Jeśli odpalasz plik index to żeby zaincludować style piszesz
  1. <?php
  2. include('../include/style.css');
  3. ?>


Ps przed chwilą sprawdzałem i działa...

Masz mini przykład:
TU
NaVarion
Tylko że style są zainkludowane w pliku, który zainkludowałem w katalogu admin.
ShadowD
Jak napisałeś tak jak mówiłem to jaki masz błąd??

Daj strukturę katalogów dokładną z plikiem głównym i tym który chcesz zanicludować...
NaVarion
admin
- login.php
include
- head.php
- foot.php
- config.php
theme
- blue
---- styl.css

- index.php

* - pogrubione są katalogi.

Mniej więcej tak (pominąłem niepotrzebne pliki)
Chodzi o to, by w pliku login.php w katalogu admin na początku i na końcu wyświetlić 2 pliki: kolejno head.php i foot.php. W pliku head.php są inkludy do kolejnych plików - config.php i styl.css

A wyświetla się błąd taki:

Cytat
Warning: main(include/config.php) [function.main]: failed to open stream: No such file or directory in /var/www/sites/yoyo.pl/n/a/lol/include/head.php on line 3

Fatal error: main() [function.require]: Failed opening required 'include/config.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/sites/yoyo.pl/n/a/lol/include/head.php on line 3


Czyli nie może utworzyć config.php, bo php chyba myśli, że jest tam jeszcze jeden katalog include a w nim dopiero config.
ShadowD
login.php:

  1. <?php
  2. include('../include/head.php');
  3. include('../include/foot.php');
  4. ?>


head.php:

  1. <?php
  2. include('config.php');
  3. include('../theme/blue/styl.css');
  4. ?>


Nie wieżę jeśli to nie będzie działało ;p

Jeśli chcesz icludować pliki to nie liczy się plik index.php tylko ten w którym dajesz include od niego prowadzisz ścieżkę a nie od głównego...
kszychu
Jest na to jedna rada: należy stosować linki bezwzględne. Definiujesz sobie wcześniej np:
  1. <?php
  2. $sciezka = '/var/www/sites/yoyo.pl/n/a/lol/';
  3. ?>

A następnie includy robisz przy pomocy tej zmiennej:
  1. <?php
  2. include($sciezka.'include/head.php');
  3. ?>
widmo17
Lub
Kod
<?php
include("http://www.costam.pl/admin/login.php");
?>
mike
~widmo17 to co napisałeś to akurat najgorsza rada w tym temacie.
Teraz specjalna zagadka dla Ciebie:
include.php
  1. <?php
  2.  
  3. $a = 10;
  4.  
  5. ?>

index.php
  1. <?php
  2.  
  3. include('http://.../include.php');
  4.  
  5. echo $a;
  6.  
  7. ?>

Co się wyświetli?
ShadowD
W moim przypadku:

  1. Warning: include() [function.include]: URL file-access is disabled in the server configuration in C:\XXX on line 2


;p
mike
~ShadowD to akurat przez blokadę na serwerze. Gdyby jednak była zdjęta i można byłoby includować pliki po protokole HTTP wynik i tak byłby inny od spodziewanego na pierwszy rzut oka 10.
widmo17
Cytat
~widmo17 to co napisałeś to akurat najgorsza rada w tym temacie.

Ale czy ktoś powiedział, że źle działająca? Tylko przy safe mode nie będzie trybić winksmiley.jpg
Cytat
Teraz specjalna zagadka dla Ciebie:

Do mnie, czy do autora tematu? xP
mike
Cytat(widmo17 @ 11.06.2008, 15:23:41 ) *
Do mnie, czy do autora tematu? xP
Tak do Ciebie. I widać słusznie zadana bo widzę, że nie wiesz jak to zadziała. Załóżmy, że safe mod pozwala na wczytanie pliku.
To jak będzie wyglądała odpowiedź?
ShadowD
Tak wiem, ale kto i po co ją wyłącza??

Tak szczerze bo nie wiem... ;p

Ps Zostawcie go, bo dostanie doła i nie wejdzie nigdy na php.pl...

Haha jubileusz mój 100 post na tym forum... smile.gif
kszychu
Cytat(widmo17 @ 11.06.2008, 15:23:41 ) *
Ale czy ktoś powiedział, że źle działająca?

Ja tak mówię!
Najpierw pomyśl dwa razy, a następnie pisz. Odwołanie się do pliku php poprzez protokół http spowoduje wysłanie tego pliku protokołem http. A co jest odpowiedzialne za komunikację poprzez http? Podpowiem: apache. Już czaisz? NIe? To lecimy dalej. W sytuacji, gdy apache ma wysłać plik php co zrobi? Wywoła interpreter. A co interpreter zrobi z plikiem php? Wykona go. A na ch.. mi includować wykonany plik php?

Cytat(widmo17 @ 11.06.2008, 15:23:41 ) *
Tylko przy safe mode nie będzie trybić winksmiley.jpg

W żadnym przypadku nie będzie trybić.
widmo17
No dobra, mój błąd, sorry, poddaję się bez bicia tongue.gif
Cytat
Zostawcie go, bo dostanie doła i nie wejdzie nigdy na php.pl...

Łeee tam, wolę się pociąć moją nową żyletką i posłuchać toli xDDD
NaVarion
Cytat(kszychu @ 11.06.2008, 14:52:49 ) *
Jest na to jedna rada: należy stosować linki bezwzględne. Definiujesz sobie wcześniej np:
  1. <?php
  2. $sciezka = '/var/www/sites/yoyo.pl/n/a/lol/';
  3. ?>

A następnie includy robisz przy pomocy tej zmiennej:
  1. <?php
  2. include($sciezka.'include/head.php');
  3. ?>


A jak zdobyć taki link bezwzględny, bez wywoływania parsera? biggrin.gif
ShadowD
Cytat(NaVarion @ 11.06.2008, 16:23:27 ) *
A jak zdobyć taki link bezwzględny, bez wywoływania parsera? biggrin.gif


Dowiedzieć się który katalog jest głównym, phpinfo(); powie Ci który to katalog...

A poza tym mój sposób jest lepszy, jak będziesz przenosił stronę będziesz musiała edytować ten link a u mnie nie... ;p
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.