Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] php a przyjazne URL'e
Forum PHP.pl > Forum > Przedszkole
bl4ck_b0x
Witam.

Ostatnio wpadłem na pomysł otworzenia ciekawego serwisu (z przyczyn oczywistych nie powiem na czym będzie polegał) winksmiley.jpg No ale dalej... chodzi mi o to, że będą mi potrzebne tzw. "przyjazne URLe" ze względu na wypozycjonowanie strony. Chciałbym aby to wyglądało tak jak np. w phpbb by przemo + spider friendly smile.gif czyli nazwa tematu jest w GET (pasku adresu) smile.gif Zastanawia mnie jak to ma działać... czy tzw. TEMAT (nazwijmy to właśnie tak wzorując się na PHPBB) ma być pobierany z bazy, następnie przypisywany do np. $_GET['nazwa_tematu']?

Bardzo prosiłbym o wskazówki...
pozdrawiam
webdice
Poczytaj o mod_rewrite.
bl4ck_b0x
no tyle to i ja wiem, wiem że to jest za to odpowiedzialne ale chodzi mi o odwołanie do konkretnego artykułu odnośnie tych URLi.. winksmiley.jpg takiego który pomoże mi to zrozumieć i napisać coś własnego smile.gif
webdice
To pewnie też wiesz -> google.pl
Regyam
tobie pewnie chodzi o sformatowanie tego GETu zeby wygladal na przyjazny czyli cos takiego:
Sprzedam dużą działkę!
Nie wyszlo temat-Sprzedam dużą działkę!.html albo temat/Sprzedam dużą działkę!
tylko tak: temat-sprzedam_duza_działke.html
to wtedy wystarczy zrobic funkcje ktora zmienia spacje na _ etc a jak Ci nie o to chodzi to nie wiem tongue.gif
bl4ck_b0x
Regyam masz racje winksmiley.jpg O to mi chodziło smile.gif Czyli przy użyciu mod_rewrite usunąć całkiem "index.php" a następnie pozamieniać wszystkie znaki (w tym spacje na np. _) i wstawić to do GET'a?
dadexix
musisz pobrać z bazy jakiegoś stringa(tytuł strony), wywalić z niego spacje - dać podkreślenie - wywaliś pl, wstawić do GET'a i skonifgurować mod_rewrite tak by nie przejmował się tą częścią która jest tytułem.. i ów koniec filozofi:D
polop
Ja zamiast stworzenia linków w postaci:
Kod
temat-sprzedam_duza_działke.html

sugerowałbym umieszczenie w nim identyfikatora, np.
Kod
temat-1-sprzedam_duza_działke.html

Następnie wyszukiwanie powinno odbywać się nie na podstawie stringa "sprzedam_duza_działke" tylko liczby całkowitej (identyfikatora) 1. Dlaczego?
- wyszukiwanie po liczbach jest zdecydowanie szybsze niż po stringach
- wyobraź sobie sytuację, że dwóch userów dopisuje ogłoszenie "Sprzedam dużą działkę". Przy wyszukiwaniu po stringu skrypt się sypnie, natomiast używając identyfikatorów wszystko będzie działało poprawnie.
Jedynym minusem (ale można o to zadbać) jest to, że linki np.
Kod
temat-1-sprzedam_duza_działke.html
temat-1-kupie_mala_altanke.html

będą prowadziły do tego samego tematu.
templar
A ja bym jednak zrobił jeszcze inaczej.

Wyszukiwanie dajesz po stringu, ale w tabeli bazy dodajesz kolumnę np. topic_url, która zawiera przekonwertowany string topicu - bez polskich znaków, spacji i pojechany np. strtolowerem. Następnie zakładasz na nią indeks i wtedy wyszukiwanie będzie błyskawiczne, bo z tego co mi wiadomo tabela z topicami w phpbb nie ma żadnego innego indeksu poza ID, ale być może się mylę. Indeksy bardzo przyspieszają pracę i wyszukiwanie danych, należy pamiętać, że silnik bazy danych "musi mieć co robić", oczywiście utrzymanie indeksów to też jakiś koszt, ale to dopiero zaczyna być problemem przy 4-5-10 indeksach i 10-20 tabelach powyżej 500 000 - milion wierszy.

No i przy dodawaniu topica najpierw go konwertujesz do takiej postaci jak wyżej, a następnie sprawdzasz w tabeli, czy taki topic_url już istnieje. Jeżeli istnieje, to dodajesz na końcu "2", i masz sprzedam_dzialke2.html, a jesli sa 2 takie tematy to je zliczasz i dajesz 3 itp itp.

Potem tylko odczytujesz przy generacji linków pole topic_url i generujesz link topic_url.'.html dla przykładu no i w mod_rewrite regułka i drobna zmiana skryptu i ot jest.

pozdro
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.