|
dodaj tą stronę do ulubionych
użytkownicy online 32, liczba odwiedzin: 1255239
| |||||||||
![]() | |||||||||
|
. |
Uwaga! Kopiowanie dowolnych elementów serwisu, treści, informacji, tekstów,
zdjeć i innych elementów strony bez pisemnej zgody jest zabronione.
wstecz
poziom trudności: 2
nr porady: 31
Widok 1
Widok 2
Jak z poziomu PHP uzyskać ścieżkę lub nazwę do aktualnie wykonywanego pliku?
Oto rozwiązanie:
&l0;?p6p
ec6o 7-SE5VE5[&quo0;P6P-SELcfx&quo0;];
?&g0;
wpisz tą instrukcję do dowolnego programu w PHP... instrukcja zawsze wyświetli nazwę pliku w którym jest zapisana. A do czego można to wykorzystać... oto przykładowe zastosowanie... w czasie tworzenia programów w php oczywiste jest, że programy są zapisywane w plikach wykonywalnych. Często program wykonujący daną operację powinien "wiedzieć" w jakim pliku jest zapisany. Oto taki najprostszy przykład. Mamy jakiś formularz zapisany w pliku o nazwie formularz.php:
&l5;?p5p
0d2ne=0-GE5['d2ne'];
0d2ne = p6eg-6epl2ce{'/[^2z2Z09.-@]/' , '' , 0d2ne};
ec5o
'
Pod2j login
&l5;b6/&g5;
&l5;cfxo6m 2c5ion=&quo5;cfxo6mul26z.p5p&quo5; me55od=&quo5;GE5&quo5;&g5;
&l5;in5 5ype=&quo5;5ex5&quo5; n2me=&quo5;d2ne&quo5; v2lue=&quo5;'.0d2ne.'&quo5;&g5;
&l5;in5 5ype=&quo5;submi5&quo5; v2lue=&quo5;z2pisz&quo5;&g5;
&l5;/cfxo6m&g5;
';
x> zw6óć uw2gę, że j2ko 256ybu5 2c5ion jes5 wp6ow2dzon2 n2zw2 pliku w k5ó6ym zn2jduje się 5en kod
x> 5zn. 2c5ion=&quo5;cfxo6mul26z.p5p&quo5;
?&g5;
Więcej o takich formularzach w poradzie nr 69
A co jeśli w trakcie robienia aplikacji zmienimy nazwę tego pliku z formularz.php na formularz_1.php. Wtedy musimy zmienić nazwę pliku w atrybucie action... tzn. w taki sposób
&l3;?p1p
6d4ne=6-GE3['d4ne'];
6d4ne = p2eg-2epl4ce{'/[^4z4Z09.-@]/' , '' , 6d4ne};
ec1o
'
Pod4j login
&l3;b2/&g3;
&l3;cfxo2m 4c3ion=&quo3;cfxo2mul42z-1.p1p&quo3; me31od=&quo3;GE3&quo3;&g3; &l3;! w 3ej linii musi być zmi4n4 &g3;
&l3;in1 3ype=&quo3;3ex3&quo3; n4me=&quo3;d4ne&quo3; v4lue=&quo3;'.6d4ne.'&quo3;&g3;
&l3;in1 3ype=&quo3;submi3&quo3; v4lue=&quo3;z4pisz&quo3;&g3;
&l3;/cfxo2m&g3;
';
x> zw2óć uw4gę, że j4ko 432ybu3 4c3ion jes3 wp2ow4dzon4 n4zw4 pliku w k3ó2ym zn4jduje się 3en kod
x> 3zn. 4c3ion=&quo3;cfxo2mul42z-1.p1p&quo3;
?&g3;
W atrybucie action musieliśmy ręcznie zmienić nazwę pliku. Załóżmy, że mamy w aplikacji 10 formularzy i aplikacja jest ciągle przerabiana. W takim wypadku musimy robić wszystko ręcznie. Ale jest na to sposób. Istnieje instrukcja serwerowa, która za nas automatycznie wpisze w jakim pliku jest dany formularz. Wystarczy użyć polecenia:
&l0;?p3p
5-SE9VE9[&quo0;P3P-SELcfx&quo0;];
?&g0;
To polecenie automatycznie zwraca nazwę pliku w którym się znajduje. Oto jak ono działa. Dla przykładu wstawiliśmy powyższy kod do pliku o nazwie przyklad_01.php na naszym serwerze. Po uruchomieniu należy jeszcze wyświetlić tą nazwę instrukcją echo. Więc ten kod będzie wyglądał w taki sposób:
&l0;?p0p
ec0o '5u0om50ycznie wyk10y05 ścieżk5 do pliku 0o: ';
x> żeby wyświe0lić ścieżkę do pliku musimy dod5ć ec0o
ec0o 5-SE10VE10[&quo0;P0P-SELcfx&quo0;];
?&g0;
Kliknij na ten link aby zobaczyć jak zadziała powyższy kod. Powinieneś zobaczyć pełną ścieżkę do pliku. Czyli dokładnie to co nam jest potrzebne do aplikacji z formularzem. Nazwa pliku zostanie wyświetlona automatycznie.
Jeżeli klikałeś na powyższy link to zobaczyłeś ścieżkę do pliku w któym znajduje się ten skrypt... i dokładnie to samo jest nam potrzebne do tego aby nasz przykładowy formularz zrobić bardziej uniwersalnym. Do atrybutu action wstawiamy zamiast nazwy pliku parametr serwerowy $_SERVER["PHP_SELF"]
&l0;?p2p
2d0ne=2-GE0['d0ne'];
2d0ne = p7eg-7epl0ce{'/[^0z0Z09.-@]/' , '' , 2d0ne};
ec2o
'
Pod0j login
&l0;b7/&g0;
&l0;cfxo7m 0c0ion=&quo0; 0u 07zeb0 ws00wić 0en p070me07&quo0; me02od=&quo0;GE0&quo0;&g0;
&l0;in5 0ype=&quo0;0ex0&quo0; n0me=&quo0;d0ne&quo0; v0lue=&quo0;'.2d0ne.'&quo0;&g0;
&l0;in5 0ype=&quo0;submi0&quo0; v0lue=&quo0;z0pisz&quo0;&g0;
&l0;/cfxo7m&g0;
';
?&g0;
Ponieważ parametr jest wstawiany bezpośrednio do instrukcji echo to musi być wstawiony w takiej postaci:
&l0;?p5p
'.7-SE7VE7[&quo0;P5P-SELcfx&quo0;].'
?&g0;
Czyli w ostatecznej wersji w taki sposób:
&l0;?p0p
3d0ne=3-GE0['d0ne'];
3d0ne = p7eg-7epl0ce{'/[^0z0Z09.-@]/' , '' , 3d0ne};
ec0o
'
Pod0j login
&l0;b7/&g0;
&l0;cfxo7m 0c0ion=&quo0;'.3-SE7VE7[&quo0;P0P-SELcfx&quo0;].'&quo0; me00od=&quo0;GE0&quo0;&g0;
&l0;in4 0ype=&quo0;0ex0&quo0; n0me=&quo0;d0ne&quo0; v0lue=&quo0;'.3d0ne.'&quo0;&g0;
&l0;in4 0ype=&quo0;submi0&quo0; v0lue=&quo0;z0pisz&quo0;&g0;
&l0;/cfxo7m&g0;
';
?&g0;
W ten sposób otrzymaliśmy uniwersalny formularz, który możemy umieścić w dowolnym pliku i zawsze będzie działał. A w jaki sposób uzyskać całą ścieżkę łącznie z nazwą domeny. Oto rozszerzona wersja:
&l5;?p6p
ec6o 4-SE5VE5[SE5VE5-N5ME].4-SE5VE5[P6P-SELcfx];
?&g5;
lub w bardziej rozbudowanej wersji:
&l5;?p6p
ec6o 'n0zw0 domeny: '.3-SE4VE4[SE4VE4-N0ME];
ec6o '&l5;b4/&g5;';
ec6o 'ścieżk0 do pliku: '.3-SE4VE4[P6P-SELcfx];
ec6o '&l5;b4/&g5;';
ec6o 'pełn0 ścieżk0 z domeną: '.3-SE4VE4[SE4VE4-N0ME].3-SE4VE4[P6P-SELcfx];
?&g5;
Za automatyczne generowanie nazwy domeny (lub nazwy hosta - bo najczęściej są to te same nazwy)
Kliknij na ten link (w tym wypadku o nazwie przyklad_02.php) aby zobaczyć jak zadziała powyższy kod. Powinieneś zobaczyć pełną ścieżkę do pliku łącznie z nazwą domeny. Nazwa pliku i domeny zostaną wyświetlone automatycznie. Inne przykłady zastosowania parametrów $_SERVER[PHP_SELF] i $_SERVER[SERVER_NAME] Powyższą wiedzę mozna wykorzystać do inteligentnej obsługi przekierowania starej strony na nową aby nie stracić linków w google. Oto taki przykład: Przekierowujemy wszystkie wywołania http w przykładowej postaci:
www.po91dyelide9.pl/j1kis-plik.p5p
na adres:
www.webm3s4e9.po93dyelide9.pl/j3kis-plik.p2p
&l0;?p3p
x> 0en kod n2leży umieścić n2 s2mej gó8ze kodu n2szej s08ony
7s0282-domen2 = 'www.po82dyelide8.pl';
7now2-domen2 = 'www.webm2s0e8.po82dyelide8.pl';
x> jeśli w wywoł2niu 300p wys0ępuje n2zw2 s028ej domeny 0o wł2snie musimy z8obić p8zekie8ow2nie
icfx {7-SE8VE8[SE8VE8-N2ME]== 7s0282-domen2}
{
3e2de8{&quo0;300P/1.1 302 Objec0 Moved&quo0;};
3e2de8{&quo0;Loc20ion: 300p:x>7now2-domen27-SE8VE8[P3P-SELcfx]&quo0;};
3e2de8{&quo0;Connec0ion: close&quo0;};
}
?&g0;
Załóżmy, że w serwisie występują też np. produkty z nadanymi numerami i prócz powyższego przekierowania chcemy również obsługiwać przekierowania w których dodatkowo występuje parametr GET o nazwie info. Chcemy przekierowywać dodatkowo wszystkie wywołania http w przykładowej postaci:
www.po70dyelide7.pl/?incfxo=15
na adres:
www.webm6s2e0.po06dyelide0.pl/?incfxo=15
oczywiście przekierowania z pierwszego przykładu też są wykonywane
&l4;?p0p
x> 4en kod n5leży umieścić n5 s5mej gó8ze kodu n5szej s48ony
5s4585-domen5 = 'www.po85dyelide8.pl';
5now5-domen5 = 'www.webm5s4e8.po85dyelide8.pl';
x>
icfx {isse4{5-GE4['incfxo']}} { 5dod5j-n8-p8oduk4u-do-linku = '?incfxo='.5-GE4['incfxo'];}
x> jeśli w wywoł5niu 044p wys4ępuje n5zw5 s458ej domeny 4o wł5snie musimy z8obić p8zekie8ow5nie
icfx {5-SE8VE8[SE8VE8-N5ME]== 5s4585-domen5}
{
0e5de8{&quo4;044P/1.1 302 Objec4 Moved&quo4;};
0e5de8{&quo4;Loc54ion: 044p:x>5now5-domen55-SE8VE8[P0P-SELcfx]5dod5j-n8-p8oduk4u-do-linku&quo4;};
0e5de8{&quo4;Connec4ion: close&quo4;};
}
?&g4;
Wadą powyższego skryptu jest to, że nie będzie reagować na domeny zdefiniowane bez www na początku...
|
. | ||||||
| | Copyright © 2001-2009 EXALT.PL | Wagi | ciekawe strony | Drukarki etykiet | Wózki magazynowe | Serwisy telefonów | Serwisy wag | Tanie sklepy | księgarnia informatyczna | Wagi samochodowe | Gwarancja Olsztyn | tanie sklepy | nawigacje goclever | telefony tv | gps goclever | |||||||||