Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]domena.pl/index.php iiii /jakis tekst
Forum PHP.pl > Forum > Przedszkole
djtomaszq
Mam dwa podobne pytania:

1. Tak jak w temacie jak na mojej stronie www.mojastrona.pl/index.php <--- tu dodam coś takiego --> /jakiś tekst to wyświetli mi się moja strona trochę "przemeblowana" tzn bez formatowania css. Jestem w tym zielony czy ktoś mi to mógłby wytłumaczyć czy to normalne i nie ma znaczenia czy może jakoś się przed ty można zabezpieczyć?

2. Jeśli odnoszę się do plików na serwerze bepośrednio to pojawia mi się tak samo brzydka strona.
Np. link do forum to: http://domena.pl/index.php?parent=forum a jeśli wpisze http://domena.pl/forum/forum.php to wyswietli sie także forum ale jakby w osobnym pliku tak jak to w nim jest a nie jako podkatalog index.php. Jest na to jakaś rada?
Daimos
Musisz sięgnąć po podstawy i zwróć uwagę na sposób wpisywania ścieżek do plików (obrazków, styli itp.). Możesz adresować pliki na 3 sposoby, Ty korzystasz z pierwszego, relatywnego:
Kod
folder/plik

ścieżka relatywna odnosi się do folderu, w którym aktualnie jesteś, więc jeśli masz adres.pl/forum, to po takiej ścieżce, wczytywany jest plik: /forum/folder/plik.
Aby temu zaradzić, podawaj adresy bezwzględne, z domeną lub bez:
Kod
/folder/plik

zwróć uwagę, że na początku masz łamanie /
Kod
http://domena.pl/folder/plik
djtomaszq
czyli w kazdym linku wystarczy dodac "/" i wtedy jak wpisze www.domena.pl/forum/forum.php nie wyswietli mi sie ta strona? Tak samo na localhoscie?

. a co z pierwszym problemem?
markuz
Nie wystarczy.

Poczytaj o .htaccess, zrób tak aby wszystkie requesty poza plikami typu css, img np. z folderu "public" były przekierowywane na index.php, nastepnie w index.php sprawdzaj ścieżkę i na jej podstawie wyświetlaj odpowiednią podstrone.

Zainteresuj się frameworkiem który zrobi to za Ciebie, na początek polecam coś prostego np. CodeIgniter.
Daimos
Problem masz jeden, ale opisałeś dwa przypadki, w jednym i drugim chodzi o ścieżki, dodaj wszędzie poprawne i będzie działać
markuz
@Daimos On chce aby plik /forum/forum.php nie był dostepny z poziomu przeglądarki (zawiera tylko content bez nagłówków itp.) - zobacz jego poprzedni temat.
Daimos
Nie wiem w jaki sposób to tak zrozumiałeś, ale szacunek dla Ciebie za udane śledztwo smile.gif A autorowi w takim razie polecę lepiej formułować problemy.
djtomaszq
Mam w glownym katalogu ftp pliki index.php i login.php i register.php a takze katalog forum i css w katalogu forum są pliki forum.php connect.php i dodaj.php a w css sa 3 pliki css..

.. strona dziala. Poprawny link wejscia na strone www.domena.pl.
Kiedy na nią wejde wyswietla sie adres domena.pl/index.php i dziala.
Klikne w menu w link forum i jest adres domena.pl/index.php?parent=forum . Jesli wpisze w pasek przegladarki sam link taki: domena.pl/forum/forum.php to wyswietla mi sam plik forum.php.
Tego nie chce. Chce zeby ten plik wyswietlal sie tylko po wpisaniu poprawnego linku.

A ten pierwszy problem to do jakiegokolwiek linku domena.pl/index.php po wyrazie .php jesli dodam jakikolwiek tekst po sleshu to mi psuje strone...

I ktora odpowiedz na moje pytanie jest wlasciwa? Przepraszam za wprowadzenie w blad lub zle formulowanie pytania. Mam nadzieje ze teraz poprawnie napisalem...
Daimos
Cytat(djtomaszq @ 20.07.2015, 13:47:41 ) *
Klikne w menu w link forum i jest adres domena.pl/index.php?parent=forum . Jesli wpisze w pasek przegladarki sam link taki: domena.pl/forum/forum.php to wyswietla mi sam plik forum.php.

Musisz sprawdzić w pliku forum.php czy został otwarty za pomocą index.php. Jeżeli nie korzystasz z ramek, tylko używasz php to zagnieżdżenia strony, to przykładowa walidacja popularna np. w phpbb:
index.php (pierwsza linijka):
  1. <?php
  2. define('MOJ_WALIDATOR', true);

forum.php:
  1. <?php
  2. if(!is_defined('MOJ_WALIDATOR'))
  3. {
  4. // forum tutaj na siłę próbuje zamienić to na odnośnik, ale wiesz co tu robić pewnie ;)
  5. }


Cytat(djtomaszq @ 20.07.2015, 13:47:41 ) *
A ten pierwszy problem to do jakiegokolwiek linku domena.pl/index.php po wyrazie .php jesli dodam jakikolwiek tekst po sleshu to mi psuje strone...

a ten problem, to rozwiązałem Ci w poprzednim poście, masz relatywne odnośniki do styli itp. więc dodaj na początku każdej ścieżki /, więc zamiast:
css/styles.css
wstawiasz
/css/styles.css

djtomaszq
Cytat(Daimos @ 21.07.2015, 09:23:17 ) *
Musisz sprawdzić w pliku forum.php czy został otwarty za pomocą index.php. Jeżeli nie korzystasz z ramek, tylko używasz php to zagnieżdżenia strony, to przykładowa walidacja popularna np. w phpbb:
index.php (pierwsza linijka):
  1. <?php
  2. define('MOJ_WALIDATOR', true);

forum.php:
  1. <?php
  2. if(!is_defined('MOJ_WALIDATOR'))
  3. {
  4. // forum tutaj na siłę próbuje zamienić to na odnośnik, ale wiesz co tu robić pewnie ;)
  5. }



a ten problem, to rozwiązałem Ci w poprzednim poście, masz relatywne odnośniki do styli itp. więc dodaj na początku każdej ścieżki /, więc zamiast:
css/styles.css
wstawiasz
/css/styles.css


Wkleiłem na pierwszą linijkę indexa i na pierwszą linijkę forum tak jak piszesz a w nawiasy {} wstawiłem całą zawartość strony zamiast header("location: http://domena.pl/index.php" i wyskakuje blad: (pewnie nie tak mialem wstawic?

  1. Fatal error: Call to undefined function is_defined() in



W drugim przypadku jak zmienie sciezke na
  1. <link href="/css/style.css" type="text/css" rel="stylesheet" />

to w ogóle nie ma formatowania na żadnej stronie.

Dodam, że teraz sprawdzam wszystko na localhoscie, nie wiem czy to ma jakieś znaczenie.

ale ten problem widzę, że jest tak samo na tym forum. np. proszę wpisać stronę http://forum.php.pl/index.php/hacker
nospor
http://php.net/manual/en/function.defined.php
djtomaszq
Niestety ciężko z angielskim i nie mogę zrozumieć manuala
nospor
nie ma funkcji IS_DEFINED... jest funkcja DEFINED. Kojarz fakty
djtomaszq
To w takim razie nie rozumiem tej podpowiedzi z kodem jeśli takiej funkcji nie ma...
nospor
rety.... osoba ktora ci to pisala, pisala to z palca, bez sprawdzenia i z rozmachu dopisala is_.... tlumacze ci poraz kolejny ze zamiast is_defined() masz napisac defined(). to naprawde tak ciezko to ogarnac?
djtomaszq
Nie ciężko smile.gif

Zrobiłem tak:
  1. if(!defined('MOJ_WALIDATOR')){
  2. header('Location: <a href="http://localhost/~wolanie/index.php&#39%3b%29;}" target="_blank">http://localhost/~wolanie/index.php');}</a>


i błąd
  1. Warning: Cannot modify header information - headers already sent by


a jak zrobie tak:
  1. if(defined('MOJ_WALIDATOR')){
  2. normalna wyświetlona część strony}

to po wpisaniu linku prawidlowego jest dobra strona a po wpisaniu forum/forum.php jest cala biala strona.
Czy tak miało być? I jesli w index.php oprocz tego forum mam jeszcze inne includowane w indexie strony i tez nie chce zeby otwieraly sie osobno tylko przez index to musze w kazdym pliku to define na poczatku "zawarunkować" ?
nospor
Cytat
Cannot modify header information - headers already sent by
Uzyj wyszukiwarki. problem poruszany petryliard razy.

A jak ci sie nie chce to wywal to header i daj poprostu:

die('Spadaj dziadu nie kombinuj mi tu');
i juz
djtomaszq
nospor to bardzo ciekawe rozwiązanie, dzięki smile.gif

Nie chce tego problemu poruszać tu bo już wiem tylko chodzi mi o to czy tak właśnie powinno to wyglądać ? I czy muszę to w każdym pliku dodać jeśli nie chce pokazywac plików bezposrednio z folderów tylko przez indexa


EDIT.: I nie działa mi dodanie / przed css

<link href="/css/style.css" type="text/css" rel="stylesheet" />
Fred1485
Cytat
Warning: Cannot modify header information - headers already sent by


http://php.net/manual/en/function.ob-start.php
nospor
Takie pliki, ktore nie powinny byc dostepne z przegladarki powinny lezec w katalogu, ktory nie jest dostepny z przegladarki.
Albo wiec taki katalog wywalasz poza webroot, albo wwalasz do niego plik .htaccess i dajesz deny from all i po sprawie.

Ja osobiscie nigdy nie bawie sie wlasnie w ted defined i die bo dla mnie to jest bezsensowana zabawa. To sie wlasnie zalatwia przez caly zabroniony katalog i juz
djtomaszq
Hmm no to by było lepsze rozwiązanie..

Popraw mnie jeśli źle myślę..

Robię katalog "zakazane" wrzucam tam ze wszystkich innych folderów pliki które otwierają się przez index.php (login.php, register.php, forum/forum.php itd.)
w .htaccess robię "deny from all" wrzucam do "zakazane" i wtedy ktoś po klikaniu w:

www.domena.pl/zakazane/forum.php
www.domena.pl/zakazane/login.php
www.domena.pl/zakazane/i tak dalej . php

zobaczy błąd 403 ale te pliki z linków www.domena.pl/index.php?parent=forum ... login .. register działać będą?

i tylko wystarczy we WSZYSTKICH odnośnikach dodać zakazane/forum.php ... login.php itd ?
nospor
Tak, odwolanie sie przez przegladarke do tych plikow da odmowe dostepu, zas dobieranie sie do nich przez include w php bedzie dozwolone
djtomaszq
Super! Działa tylko czy ... mogę zrobić tak, żeby nie mieszać i nie zmieniać sciezki do każdego pliku tylko wrzucać ten sam plik .htaccess to folderow gdzie sa "zakazane" pliki ? lub może jest jakiś kod w ktorym wskaze te katalogi w .htaccess i go dam do glownego katalogu z index.php ?

a problem mam tylko z css . Mam je w css/style.css i jak zablokuje zeby nie wyswietlalo www.domena.pl/css/css.style to nie wyswietla w ogole a w index.php
oczywiscie mam tak w head:
  1. <link href="css/style.css" type="text/css" rel="stylesheet" />
nospor
Cytat
Super! Działa tylko czy ... mogę zrobić tak, żeby nie mieszać i nie zmieniać sciezki do każdego pliku tylko wrzucać ten sam plik .htaccess to folderow gdzie sa "zakazane" pliki ? lub może jest jakiś kod w ktorym wskaze te katalogi w .htaccess i go dam do glownego katalogu z index.php ?
Mozesz ten .htaccess dodawac do kazdego katalogu ale nie tedy droga. Zrob to raz a porządnie i wszystko trzymaj w jednym.

Co do css, to rzeczy ogolno dostepne rzecz jasna mają lezec poza tym katalogiem
djtomaszq
a gdzie znajdę

Jeśli css leży po za katalogiem z .htaccess to mogę go otworzyć przez link domena.pl/css/style.css a tego tez nie chce...
nospor
Juz nie popadaj w paranoje.... css to dane ogolno dostepne i tego nie zmienisz.
djtomaszq
Czyli mogą być wyświetlane? smile.gif No ok teraz już wiem..

Próbowałem zablokować katalogi takim kodem w katalogu glownym przez .htaccess:

  1. <Directory /forum/>
  2. Deny from all
  3. </Directory>


ale blokuje całą strone
nospor
Tak, css moze byc wyswietlony
NIe, nie mozesz stosowac dyrektywy DIRECTORY w htaccess
djtomaszq
ok, ten problem rozwiązałem takim kodem:

  1. <Files *.php>
  2. order deny,allow
  3. deny from all
  4. </Files>
  5. <Files index.php>
  6. allow from all
  7. </Files>
  8. <Files logout.php>
  9. allow from all
  10. </Files>


ale została mi jeszcze sprawa slesha.. domena.pl/index.php/ (slesh psuje strone, nie pomaga dodanie /css.style.css
nospor
a czy katalog css znajduje sie w glownym katalogu strony?
djtomaszq
Tak folder /css/ jest w glownym katalogu wraz z index.php

EDIT: w komentarzu wyżej źle napisałem
zamiast: /css.style.css
powinno: /css/style.css
nospor
a:
http://domena.pl/css/style.css
?
Otwiera ci sie w ogole ten adres w przegladarce?
djtomaszq
Tak, otwiera mi sie strona z kodem css'a. Dodam, że na localhoscie teraz wszystko sprawdzam mam nadzieje, że to nie robi różnnicy (bo tego nie wiem).

Tak, otwiera mi sie strona z kodem css'a. Dodam, że na localhoscie teraz wszystko sprawdzam mam nadzieje, że to nie robi różnnicy (bo tego nie wiem).
nospor
to wszystko zalezy jak ty w localhost to odpalasz.... przeciez jak masz zagniezdzone katalogi w localhost to sciezki bedą zupelnie inne
djtomaszq
na localhoscie tak:
http://localhost/~strona/index.php/dfgdfgdfg - to psuje strone
http://localhost/~strona/css/style.css - wyswietla css'a

.. sprawdzalem na serwerze to css mam jeszcze w katalogu z index.php i tam jak dodam /sha to juz działa wszystko dobrze ale na localhoscie nie.


EDIT: Działa jak dodam "http://localhost/~strona/" css/css.style

Czyli to jest zależne od katalogów. To już wiem i za każdym razem jak wrzycam z locala na serwer www muszę te ścieżki zmieniać ?


EDIT2: Czy to normalne, że jak wpiszę podwójnie czy potrojnie index.php
  1. /index.php/index.php/index.php?parent=forum

To strona się wyswietla poprawnie?
Daimos
Mam Ci wkleić moją odpowiedź, która jest zaraz pod tematem znowu? No rusz trochę głową i staraj się zrozumieć co Ci wszyscy piszą. Naucz się też korzystać z narzędzi ułatwiających pracę, jak np. konsole w przeglądarkach (CTRL+J na chrome), od razu Ci wyrzuci błędy 404 dla styli i po ścieżce poznasz, dlaczego tak się dzieje
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.