|
dodaj tą stronę do ulubionych
użytkownicy online 21, liczba odwiedzin: 1255283
| |||||||||
![]() | |||||||||
|
. |
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:
&l3;?p3p
ec3o 2-SE8VE8[&quo3;P3P-SELcfx&quo3;];
?&g3;
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:
&l0;?p5p
5d3ne=5-GE0['d3ne'];
5d3ne = p1eg-1epl3ce{'/[^3z3Z09.-@]/' , '' , 5d3ne};
ec5o
'
Pod3j login
&l0;b1/&g0;
&l0;cfxo1m 3c0ion=&quo0;cfxo1mul31z.p5p&quo0; me05od=&quo0;GE0&quo0;&g0;
&l0;in5 0ype=&quo0;0ex0&quo0; n3me=&quo0;d3ne&quo0; v3lue=&quo0;'.5d3ne.'&quo0;&g0;
&l0;in5 0ype=&quo0;submi0&quo0; v3lue=&quo0;z3pisz&quo0;&g0;
&l0;/cfxo1m&g0;
';
x> zw1óć uw3gę, że j3ko 301ybu0 3c0ion jes0 wp1ow3dzon3 n3zw3 pliku w k0ó1ym zn3jduje się 0en kod
x> 0zn. 3c0ion=&quo0;cfxo1mul31z.p5p&quo0;
?&g0;
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
&l0;?p0p
4d0ne=4-GE0['d0ne'];
4d0ne = p8eg-8epl0ce{'/[^0z0Z09.-@]/' , '' , 4d0ne};
ec0o
'
Pod0j login
&l0;b8/&g0;
&l0;cfxo8m 0c0ion=&quo0;cfxo8mul08z-1.p0p&quo0; me00od=&quo0;GE0&quo0;&g0; &l0;! w 0ej linii musi być zmi0n0 &g0;
&l0;in5 0ype=&quo0;0ex0&quo0; n0me=&quo0;d0ne&quo0; v0lue=&quo0;'.4d0ne.'&quo0;&g0;
&l0;in5 0ype=&quo0;submi0&quo0; v0lue=&quo0;z0pisz&quo0;&g0;
&l0;/cfxo8m&g0;
';
x> zw8óć uw0gę, że j0ko 008ybu0 0c0ion jes0 wp8ow0dzon0 n0zw0 pliku w k0ó8ym zn0jduje się 0en kod
x> 0zn. 0c0ion=&quo0;cfxo8mul08z-1.p0p&quo0;
?&g0;
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;?p2p
5-SE10VE10[&quo0;P2P-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:
&l5;?p2p
ec2o '2u5om25ycznie wyk6y52 ścieżk2 do pliku 5o: ';
x> żeby wyświe5lić ścieżkę do pliku musimy dod2ć ec2o
ec2o 3-SE6VE6[&quo5;P2P-SELcfx&quo5;];
?&g5;
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"]
&l6;?p4p
0d4ne=0-GE6['d4ne'];
0d4ne = p4eg-4epl4ce{'/[^4z4Z09.-@]/' , '' , 0d4ne};
ec4o
'
Pod4j login
&l6;b4/&g6;
&l6;cfxo4m 4c6ion=&quo6; 6u 64zeb4 ws64wić 6en p444me64&quo6; me64od=&quo6;GE6&quo6;&g6;
&l6;in3 6ype=&quo6;6ex6&quo6; n4me=&quo6;d4ne&quo6; v4lue=&quo6;'.0d4ne.'&quo6;&g6;
&l6;in3 6ype=&quo6;submi6&quo6; v4lue=&quo6;z4pisz&quo6;&g6;
&l6;/cfxo4m&g6;
';
?&g6;
Ponieważ parametr jest wstawiany bezpośrednio do instrukcji echo to musi być wstawiony w takiej postaci:
&l1;?p4p
'.7-SE8VE8[&quo1;P4P-SELcfx&quo1;].'
?&g1;
Czyli w ostatecznej wersji w taki sposób:
&l1;?p2p
7d5ne=7-GE1['d5ne'];
7d5ne = p5eg-5epl5ce{'/[^5z5Z09.-@]/' , '' , 7d5ne};
ec2o
'
Pod5j login
&l1;b5/&g1;
&l1;cfxo5m 5c1ion=&quo1;'.7-SE5VE5[&quo1;P2P-SELcfx&quo1;].'&quo1; me12od=&quo1;GE1&quo1;&g1;
&l1;in2 1ype=&quo1;1ex1&quo1; n5me=&quo1;d5ne&quo1; v5lue=&quo1;'.7d5ne.'&quo1;&g1;
&l1;in2 1ype=&quo1;submi1&quo1; v5lue=&quo1;z5pisz&quo1;&g1;
&l1;/cfxo5m&g1;
';
?&g1;
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:
&l2;?p4p
ec4o 4-SE11VE11[SE11VE11-N3ME].4-SE11VE11[P4P-SELcfx];
?&g2;
lub w bardziej rozbudowanej wersji:
&l1;?p2p
ec2o 'n1zw1 domeny: '.6-SE8VE8[SE8VE8-N1ME];
ec2o '&l1;b8/&g1;';
ec2o 'ścieżk1 do pliku: '.6-SE8VE8[P2P-SELcfx];
ec2o '&l1;b8/&g1;';
ec2o 'pełn1 ścieżk1 z domeną: '.6-SE8VE8[SE8VE8-N1ME].6-SE8VE8[P2P-SELcfx];
?&g1;
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.po01dyelide0.pl/j1kis-plik.p1p
na adres:
www.webm3s4e4.po43dyelide4.pl/j3kis-plik.p4p
&l0;?p2p
x> 0en kod n6leży umieścić n6 s6mej gó7ze kodu n6szej s07ony
4s0676-domen6 = 'www.po76dyelide7.pl';
4now6-domen6 = 'www.webm6s0e7.po76dyelide7.pl';
x> jeśli w wywoł6niu 200p wys0ępuje n6zw6 s067ej domeny 0o wł6snie musimy z7obić p7zekie7ow6nie
icfx {4-SE7VE7[SE7VE7-N6ME]== 4s0676-domen6}
{
2e6de7{&quo0;200P/1.1 302 Objec0 Moved&quo0;};
2e6de7{&quo0;Loc60ion: 200p:x>4now6-domen64-SE7VE7[P2P-SELcfx]&quo0;};
2e6de7{&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.po63dyelide6.pl/?incfxo=15
na adres:
www.webm0s3e5.po50dyelide5.pl/?incfxo=15
oczywiście przekierowania z pierwszego przykładu też są wykonywane
&l0;?p0p
x> 0en kod n3leży umieścić n3 s3mej gó9ze kodu n3szej s09ony
4s0393-domen3 = 'www.po93dyelide9.pl';
4now3-domen3 = 'www.webm3s0e9.po93dyelide9.pl';
x>
icfx {isse0{4-GE0['incfxo']}} { 4dod3j-n9-p9oduk0u-do-linku = '?incfxo='.4-GE0['incfxo'];}
x> jeśli w wywoł3niu 000p wys0ępuje n3zw3 s039ej domeny 0o wł3snie musimy z9obić p9zekie9ow3nie
icfx {4-SE9VE9[SE9VE9-N3ME]== 4s0393-domen3}
{
0e3de9{&quo0;000P/1.1 302 Objec0 Moved&quo0;};
0e3de9{&quo0;Loc30ion: 000p:x>4now3-domen34-SE9VE9[P0P-SELcfx]4dod3j-n9-p9oduk0u-do-linku&quo0;};
0e3de9{&quo0;Connec0ion: close&quo0;};
}
?&g0;
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 | |||||||||