Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przyjazne URLe [scanner]
Forum PHP.pl > Wortal > Artykuły
Stron: 1, 2, 3
Ozzy
Można, ale zapraszam na PM/JB/GG smile.gif
a79rtur
czy ktos znalazl sposob na ominiecie problemu z przeladowywaniem sie strony, opisanego tutaj:
http://forum.php.pl/index.php?showtopic=14...20&#entry113831

mam na stronie ,pomieszany kod php i html i przeladowuje sie ona kilka razy jesli uzyje adresu postaci np. index.php/zm1/zm2, z tego co widze jest to powodowane ladowniem sie styli, swf'ów itp.
bigZbig
scanner dobry artykul ale brakuje w nim przynajmniej jednej istotnej informacji tj. koniecznosci stosowania bezwzglednych urli i zwiazanych z tym problemow. Jest to problem, ktory napewno wyskoczy i to juz na smamym poczatku zabawy z niceUrl.

Mod_rewrite mozesz moim zdaniem sobie w tym arcie podarowac traktujac to zagadnienie jako temat kolejnego arta z cyklu. Tak na marginesie rozwiazanie kozystajace z mod_rewrite przynajmniej na pierwszy rzut oka bo nie zglebialem go wydaje mi sie nie tylko trudniejsze ale w zasadzie nie wnosi tez zadnej nowej funkcjonalnosci. Moge sie mylic, ale w takim wypadku prosze jakas madra glowe o sprostowanie.

Co do przewijajacego sie w tym temacie problemu przekazywania identyfikatora sesji, ktory pojawia sie tylko w przypadku, kiedy nie ma innej mozliwosci jego przekazania np. poprzez ciasteczko, moznaby sie pokusic o napisanie odpwiedniej funkcji dodajacej go na koncu adresu. W przypadku przyjaznych urli jest tylko ten problem, ze istotna jest nie tylko kolejnosc, ale tez ilosc zmiennych (a wlasciwie ich wartosic) dlatego w przypadku takiej funkcji - nazwijmy ja appendSID - konieczne byloby takze zaimplementowanie mechanizmu, ktory potrafilby rozpoznac czy w $_SERVER['PATH_INFO'] zawarty jest SID czy tez nie i w takim przypadku odpowiednio przypisac wartosci do zmiennych.

Ostatecznie moznaby sie pokusic o zawarcie w przyjaznym url takze informacji o nazwach zmiennych ale wtedy nasze urle nie bylyby juz takie przyjemne dla oka.

Konczac ten przydlugawy wywod chcialbym jeszcze zauwazyc, ze chociaz dzisiaj - a przynajmniej jeszcze wczoraj ;-) - pajaczki indeksowaly przyjazne urle, to jutro moga przestac to robic. W koncu jest to naruszenie pewnych zasad, podstawa ktorych bylo zalozenie aby nie katalogowac tresci dynamicznej, ktora ulega ciaglym zmianom. Dzisiaj ten artykul generuje sie na pierwszej stronie, a jutro pojawi sie na piatej bo na pierwszej bedzie juz nowszy. Tutaj zglaszam sie z apelem do wszystkich stosujacych niceURL. Robcie to z glowa bo po to tworcy wyszukiwarek nakladaja pewne ograniczenia co do indeksowania stron abysmy mieli do dyspozycji jedynie aktualne i w miare rzetelne informacje.
nospor
NO wlaśnie. Po co stosować te przyjazne url. Url jest dla skrytpu nie dla użytkownika. Użytkownik klika w link i ma dostać to co chce. Jemu wsio ryba jaki to będzie url, czy będzie coś z niego kumał czy nie. To skrypt ma wiedzieć jakie dane ma wyciągnąć i co znich zrobić.
bendi
Cytat(Seth @ 2005-01-12 18:35:14)
Czyli jednym slowem lepiej nie korzystac z wbudowanych mechanizmow sesji w php przy rewrite'cie winksmiley.jpg

Jako ze odpowiedzi na pytanie Seth'a nie widze, a nurtowalo mnie ono jakis czas temu to napisze moja regulke, ktora sie sprawdza:
Kod
RewriteRule ^([a-z]{2}/)?([a-zA-Z0-9_]+)?/?$  index.php?lang=$1&a=$2&%{QUERY_STRING}&http_auth=%{HTTP:Authorization} [L]

Jak widac dodaje sobie wszytkie zmienne get'owe, ktore zostaly przeslane w tradycjny sposob, oraz naglowek Authorization, ktory jezeli php dziala w trybie safe_mode nie zostaje zwrocony przez funkcje getAllHeaders" title="Zobacz w manualu PHP" target="_manual
xarr
nospor: niekoniecznie. Szczególnie przy rozbudowanych serwisach prosty adres url w stylu ścieżki dostępu do pliku to często wygoda. Gdzie, co można znaleźć, komuś to polecić, czy nawet przyjść do roboty i z głowy wklepać url. Oczywiście jak zwykle to kwestia podejścia i nie każdy to uważa za konieczne mimo bezspornej zalety podczas pozycjonowania www.
nospor
dzięki xarr winksmiley.jpg Twoje wyjaśnienie faktycznie wyjaśniało by takie zastosowanie urli.
xarr
Nospor: Hehe i tak wiem, ze nie powiedzialem nic nowego, ale dzieki za... "dobra mine do zlej gry" biggrin.gif

Pozdrowka
camelx
Mam małą prośbę. Czy mógł by ktoś napisać jakiś malutki przykład wykożystania 'przyjaznych url-i' w praktyce. Chodzi mi o jakiś prosty przykład gdzie były by ze dwa linki wykorzystujące ten sposób...
Będę bardzo wdzięczy za pomoc smile.gif
Pozdrawiam
camelx
yyy, tzn. chodziło mi raczej o jakiś kod php... Jak wykorzystać to w praktyce:
  1. <?php
  2. $arrParams = array();
  3. $strDefaultPath = '/newsy/pokaz/strona/1';
  4. $_SERVER['PATH_INFO'] = isset( $_SERVER['PATH_INFO'] ) ? $_SERVER['PATH_INFO'] : $strDefaultPath;
  5. $arrParams = explode( '/', substr( $_SERVER['PATH_INFO'], 1) );
  6. echo '<pre>';
  7. var_export( $arrParams );
  8. echo '</pre>';
  9. ?>

questionmark.gif?
NuLL
Normalnie questionmark.gif Masz poprostu ładniejszy adres - musisz się pobawić w rozpoznawanie zmiennych i tyle smile.gif
camelx
No dobra, ale co zrobić jeśli jestem na 'strona1.php' i chcę przejść na 'strona2.php' a dokładniej 'strona2.php?go=test' questionmark.gif

strona2.php wygląda np. tak
  1. <?php
  2. switch(_$GET['go'])
  3. {
  4. case 'test':
  5. echo 'udalo sie';
  6. break;
  7. }
  8. ?>


Co muszę zrobić, żeby mój adres wyglądał mniej więcej tak: strona2/go/test questionmark.gif
NuLL
mod_rewrite jest potrzebyn.

Jak chcesz dysktuować o swoim problemie załóż nowy temat bo rozmawiamy nt. artykułu smile.gif
yavaho
Mam jedno pytanie dotyczace pliku .htaccess
jak ma wygladac zawartosc takiego pliku jezeli kazdy adres chce przekierowac do pliku index.php

czyli wpisuje przerozne adresy np:
www.mojadomena.pl/katalog1/katalog2/katalog3
www.mojadomena.pl/plik.php
www.mojadomena.pl/plik.php?id=1
a ma sie otworzyc tylko:
www.mojadomena.pl/index.php
sobstel
Kod
RewriteRule ^(.*)$ index.php
pwa
W momencie gdy zastosuje przyjazne url-e wyrzuca mi calkowicie style i grafike, dodam ze uzywam Smarty. Nie mam pojecia gdzie tkwi przyczyna tego problemu??
bela
Używaj bezwzględnych URL-i.
Daj tag <base href="http://foo.pl/" /> w <head>.
pwa
przerobilem adres styli w szablonie (na ../style/style.css) i tez dziala ale sprobuje z adresami bezwzglednymi biggrin.gif dzieki
janek
chciałbym wykorzystać niceURL, ale muszę wysłać dane z wyszukiwarki (formularza) przez GET. Da się zrobić tak, żeby wszedzie tam gdzie są wyniki wyszukiwania stosować "normalne" adresy (z "?"), a na pozostałych stronach niceURL?
tiraeth
Formularze są do wysyłania danych POST'em smile.gif Po co wysyłać GET'em? Mało bezpieczne i bardzo żadko stosowane...
janek
GET ponieważ:

1. przy wyszukiwarce nie potrzebne mi aż tak bardzo bezpieczeństwo jakie daje POST

2. ktoś może zapisać sobie wyniki wyszukiwania do ulubionych (bo ma zmienne w URL-u)

3. po otrzymaniu wyników wyszukiwania można przejść do szczegółów danego wpisu, potem ludzie robią często wstecz w wyszukiwarce. Nie chcę żeby dostawali informację o wygaśnięciu strony lub o tym, ze dane post zostana przesłane ponownie (chyba FF tak robi).

... ale zostawmy przewagę POST nad GET lub GET nad POST, co myślicie o wymieszaniu url-i z "?" i niceURL w jednej aplikacji? Bo to było moje pytanie ...
karolski
artykuł jest bardzo fajny ale przydal by sie maly opis jak to uruchomic w praktyce bo pytania sie powtarzaja np. o <base>
scanner
W najbliższym czasie artykuł zostanie poprawiony i zaktualizowany. Cierpliwości smile.gif
nightspirit
/index
  1. <? 
  2. $arrParams = array(); 
  3. $strDefaultPath = '/index'; 
  4. $_SERVER['PATH_INFO'] = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : $strDefaultPath; 
  5. $arrParams = explode('/', substr($_SERVER['PATH_INFO'], 1)); 
  6. /************************/
  7. if ( $arrParams[0] == 'news' )
  8. {
  9.     if ( $arrParams[1] == 'view' )
  10.     {
  11.         if ( isset( $arrParams[2] ) )
  12.         {
  13.             echo 'id = '.$arrParams[2];
  14.         }
  15.     }
  16. }
  17. ?>

a .htaccess to wiecie jak wygląda

A link będzie wyglądać www.foo.com/index/news/view/1

pozdrawiam, ns
djcinek
Scanner, jam ci niegodzien nog calowac. Zastanawialem sie ostatnio jak to zrobic i dzieki Twojemu artykulowi mi sie "otworzylo". DziekI! aarambo.gif
vieri_pl
A ja mam problem z tym kodem z artykułu...

Mam w pliku news.php linijke:
  1. <?php
  2. if ($_GET['dzial'] == 'wiadomosci'){
  3. ?>
JEśli dział to wiadomosci to pokazują się newsy... Link poprzednio wyglądał tak index.php?dzial=wiadomosci, no i chcę aby wyglądał ładniej, np index,dzial,wiadomosci... Jak przerobić kod scannera i tą linijkę sprawdzająca dział questionmark.gif

Nie jestem specjalistą w php, i mam z tym problem... Prosze pomóżcie !

smile.gif smile.gif smile.gif
adam187
Jak dokładnie powinien wyglądać .htaccess
mam tak:
Kod
<Files linki>
ForceType application/x-httpd-php
</Files>

Mam w katalogu plik linki.php i wywala mi 404
Na początku miałem bląd 500 ale admin dal mi prawa
i teraz powinno działać ale zonk. Może coś jeszcze w
ustawieniach serwa ?
Sabistik
Cytat
Mam w katalogu plik linki.php i wywala mi 404

nie weim co ty tam masz ale to ma byc plik 'linki' bez rozszerzenia. po to wlasnie dokonujesz wpisu w htaccess
adam187
Cytat(Sabistik @ 2006-01-26 17:08:54)
Cytat
Mam w katalogu plik linki.php i wywala mi 404

nie weim co ty tam masz ale to ma byc plik 'linki' bez rozszerzenia. po to wlasnie dokonujesz wpisu w htaccess

o to chodziło smile.gif wielkie dzięki i pozdrawiam
jumanji
jestem nowy wiec nie bijcie smile.gif
klikam na link podany w pierwszym poscie i nie dziala biggrin.gif
tytul brzmi zachecajaco wiec bylbym dzwieczny za dzialajacy link

pozdr
ActivePlayer
wortal zmienił postać, zmieniły się też linki.
tutaj nowy, prosze kogoś z uprawnieniami o zaedytowanie 1 postu i poprawienie tez tam.
http://phppl.ezpublish.no/phppl/wortal/art.../przyjazne_urle

---
Zrobione.
~mike_mech
Spirit86
no i nikt nie rozwiązał problemu lokalizacji bezwględnej.
Dodawanie do każdego obrazka http://Adres_serwera/obrazek.jpg jest strasznie upierdliwe....
Czy jeżeli przeglądarka napotka w kodzie odnośnik http:// obrazki nie otwierają się wolniej (łaczy się z serwerem)? snitch.gif
sobstel
Cytat(Spirit86 @ 2006-02-14 21:23:48)
no i nikt nie rozwiązał problemu lokalizacji bezwględnej.
Dodawanie do każdego obrazka http://Adres_serwera/obrazek.jpg jest strasznie upierdliwe....

a BASE HREF w sekcji HEAD dokumentu? hawk podał już to rozwiązanie na początku wątku...

Cytat
Czy jeżeli przeglądarka napotka w kodzie odnośnik http:// obrazki nie otwierają się wolniej (łaczy się z serwerem)? snitch.gif


moze sie myle, ale żądanie to żądanie, czy wpiszesz http czy nie tak i tak musi ci się połączyć z tym samym serwerem gdzie znajduje sie obrazek i go pobrac (no chyba ze jest juz cacheowany).
GrayHat
@sopel: przy pobieraniu strony i wszystkich grafik uzywa sie jednego polaczenia... co do obrazkow z http:// nie jestem pewien ale moze sie zdazyc w pIEknej przegladarce ze bedzie nawiazywal polaczenie jeszcze raz myslac ze obrazek jest hotlinkowany smile.gif
Spirit86
Cytat(sopel @ 2006-02-15 00:17:45)
a BASE HREF w sekcji HEAD dokumentu? hawk podał już to rozwiązanie na początku wątku...

Kurcze, wczoraj jak to sprawdzałem (base href) to mi nie działał), dziś działa biggrin.gif.

Ale nadal wydaje mi sie, że np. IE napotkając w atrybucie src http otworzy nowe połączenie...

Ale jak jest już base href, tak być nie powinno smile.gif.
son
Czy nie lepiej żeby ta linijka:

  1. <?php
  2. $_SERVER['PATH_INFO'] = isset( $_SERVER['PATH_INFO'] ) ? $_SERVER['PATH_INFO'] : $strDefaultPath;
  3. ?>


wyglądała tak:

  1. <?php
  2. $_SERVER['PATH_INFO'] = $_SERVER['PATH_INFO'] != "" ? $_SERVER['PATH_INFO'] : $strDefaultPath;
  3. ?>


?
sobstel
Cytat(son @ 2006-02-23 21:40:08)
Czy nie lepiej żeby ta linijka:

  1. <?php
  2. $_SERVER['PATH_INFO'] = isset( $_SERVER['PATH_INFO'] ) ? $_SERVER['PATH_INFO'] : $strDefaultPath;
  3. ?>


wyglądała tak:

  1. <?php
  2. $_SERVER['PATH_INFO'] = $_SERVER['PATH_INFO'] != "" ? $_SERVER['PATH_INFO'] : $strDefaultPath;
  3. ?>


?

bardziej tak

  1. <?php
  2. $_SERVER['PATH_INFO'] = !empty( $_SERVER['PATH_INFO'] ) ? $_SERVER['PATH_INFO'] : $strDefaultPath;
  3. ?>


PATH_INFO nie zawsze jest ustawione wiec trzeba sie zabezpieczyc zeby nie wywalalo NOTICE errora
kosheen2k
Witajcie! Mam mianowicie takie zapytanie: tutaj widze gadu gadu na temat przyjaznych urli a ja chcialem zapytac o url'e tego typu jak na przyklad na stronie owned.pl: http://owned.pl/?2:218::77 <-- jak zrobic tego typu linki? wiem ze bedzie cos z explode() ale naprawde nie mam zielonego pojecia jak to zaczac i jak zakonczyc.... chcialbym zrobic tak - ze pierwsze wartosc czyli po znaku "?" to dzial po ":" podstrona po "::" na przyklad jakas wartosc z bazy danych... prosze podpowiedzcie jak to napisac, szukalem wszedzie, szukalem w google, na roznych stronach o php... szukalem na google: "parsowanie url" - "url parsing" - itepe itede... prosze pomozcie bede bardzo wdzieczny za pomoc...

chcialbym wlasnie zrobic linki tego typu jak na stronie http://owned.pl czyli http://owned.pl/?2:218::77

Dziekuje i Pozdrawiam sadsmiley02.gif
scanner
http://owned.pl/?2:218::77
to inaczej może być:
http://owned.pl/index.php?varA=2&varB=218&varC=&varD=77
tudziez:
http://owned.pl/index.php/2/218//77

Analizując inne linki na tej stronie, wnioskuję, że ten :: to ni mniej ni więcej, tylko null smile.gif

A jak to zrobić? Wystaczy zamienić separator / na : (może tez być . , | czy cokolwiek innego, czego nie będziemy traktowac jako wartości.
kosheen2k
wiem probowalem tak zrobic, ale kiedy wpisze index.php::10 to nie dziala bo mowi ze nie ma takiej strony, probowalem naprawde na wszelkie sposoby... prosze czy ktos moze mi powiedziec jak to zrobic? dziekuje scanner za podpowiedz smile.gif ale prosze o pomoc... moze jakas prosta funkcje - najlepiej sprawdzona sad.gif prosze
scanner
Ale to pokaż może kod, którym parsu[/QUOTE]jesz URL'a?
Prawdopodobnie (ale to musiałbym sprawdzić, gdyz teraz nie pamiętam) znak dwukropka nie może być traktowany jako separator aż tak bezpośrednio.

Sprawdze to wieczorem w domu i jeśli zadziała, to dam linka do jakiegoś demo smile.gif

Update:
Zobacz co napisałem w artykule:
Cytat
Jako ciekawostkę podam, że ukośniki (poza pierwszym) można zamienić na inny znak, uzyskując URLe o postaciach takich jak poniżej. Pamiętać tylko należy o tym, że takie adresy ponownie mogą być żle indeksowane przez wyszukiwarki.

Prawdopodobnie też na owned.pl sytuacja wygląda tak

http://www.scanner.eu.org/dev/niceUrl/?12:23::77
kosheen2k
byłbym bardzo wdzieczny smile.gif tymczasem powalcze troszeczke z tym co napisales smile.gif (jesli moge per Ty smile.gif ) pozdrawiam i dziekuje za chec pomocy smile.gif

P.S. Kod parsujacy jest dokladnie ten sam ktory byl podany w linku na samym poczatku tematu.


probowalem zrobic to w ten sposob bez zadnego parsowania tylko zwykly $QUERY_STRING:

Kod
if ($QUERY_STRING == ':1') { echo 'blablabla'; }
i dziala

ale co mi z tego, musza byc z gory ustalone, a jesli ja chce do tego zrobic jeszcze zmienna :1111:11 to wtedy juz chyba musze uzyc parsowania prawda?


poradzilem sobie smile.gif :
http://www.kosheen2k.be/dev.php?:1:ktostam,1212:asd

w ten sposob, robi mi sie array w ktorym pomijam tylko [0] i juz mam to co chcialem smile.gif

chociaz moze Scanner masz lepsze rozwiazanie?

wlasnie BTW: jak zrobic ze jesli user nic nie wpisze po ? czyli np: ?:1:11 to zeby samo sie wpisalo tongue.gif ?

dokladniej chodzi mi o to... jesli tablica $var_array posiada tylko element [0] to ma sie zaladowac strona 0 ?
scanner
Przeczytaj jeszcze raz dokładnie mój poprzedni post, zajrzyj równiez pod podany na końcu adres
kosheen2k
Przeczytałem dokładnie, zajrzałem i wiem juz wszystko!

Dziękuję za wszelką pomoc! smile.gif Pozdrawiam
occulkot
hehehe - na owned mam proste mapowanie

10 zmiennych ktore sa podawane w adresie - jako domyslny separator uzywany jest ":" natomiast separator tablic ";"

Kazdy podskrypt odwoluje sie do zmiennych adresowych - $z[typ], $z[id1], $z[id2]

mamy tam po kolei -
typ
3 zmienne typu id
5 zmiennych typu op/sort
1 zmienna typu podstrona winksmiley.jpg

ot i cala tajemnica wiary biggrin.gif

Ale powoli przymiezam sie do przejscia na mod_rewrite - rowniez z mapowaniem adresu

Pozdrawiam!
kosheen2k
cześć occulkotku smile.gif powiem ze owned.pl to kupa dobrej roboty smile.gif pozdrawiam

P.S. wiem rozgryzłem już to smile.gif
tomaroc
W kwestii linkowania (grafiki, styli.css, podstron itp...) relatywnego - nie trzeba ustawiać <BASE> w naglowku ani tymbardziej linkowac pełnym adresem (z http://) wystarczy kazdy link zacząc od / (slash) czyli np:

<img src="/karalog/obrazek.gif">
itp...
Sam dlugo na to nie wpadłem - dopiero ktoś mi podpowiedział wiec podaje dalej jak by jeszcze ktoś mial z tym problem....



Mam natomiast pytanie JAK ustawic na serv zeby jako glowna strona odpalała sie index (bez rozszerzenia) bo tymczasowym rozwiazaniem mam ustawione w pliku .htaccess strone błedu index i gdy nie znajduje index.php przenosi na index - ale nie jest to chyba prawidlowe rozwiazanie questionmark.gif?

z gory dzieki za jakies sugestie!
pozdro
tom
tes
Myślę że może kogoś zainteresuje pojawienie się artykułu o tym samym temacie na phpfreaks.com:
http://www.phpfreaks.com/tutorials/149/0.php
Wujashek
Kiedyś się przymierzałem do przyjaznych urli ale z czystego lenistwa nie chciało mi się tego zrobić.
Po przeczytaniu tego artykułu wreszcie coś z tym zrobiłem i szczerze mówiąc przy podejsciu obiektowym całkiem ciekawie to działa i jest przyjemne w użytkowaniu smile.gif

przyolkuskiej.pl/serwis/Gminny_informator/Wybory
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.