Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> .httacces przyjazne linki, zmienna w php bez użycia metody GET
szmerak
post
Post #1





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

Ostrzeżenie: (0%)
-----


Używam do określenia linku jednego parametru get video.php?id=1
Chciał bym to zamienić w .htaccess na np. www.mojastrona.pl/video/samolot-sie-rozbil.html
Czy jest to możliwe nie podając zmiennej zawierającej nazwe "samolot sie rozbil" w GET?
tylko osobno w kodzie PHP?
Dalej chciał bym bazować tylko na id. Już oparłem cały skrypt na tym więc męczące by było przepisywanie wszystkiego na nowo.
Szukam już bardzo długo odpowiedzi ale na internecie są same przykłady co niedziałają. Przynajmniej mi ;/

Z góry dziękuje za pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Quadina
post
Post #2





Grupa: Zarejestrowani
Postów: 200
Pomógł: 38
Dołączył: 1.12.2010
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Twoje pytanie nie jest precyzyjne wystarczająco i mam dziwne wrażenie, że nie wiesz co to jest metoda GET tak właściwie więc, żeby dać na nie odpowiednią odpowiedź wyłożę trochę teorii.

Metoda GET to nic innego jak wszystko co widzisz w pasku adresu, zatem jeżeli masz w pasku adresu link:
www.mojastrona.pl/video/samolot-sie-rozbil.html
To jest to wszystko co wyżej wysłane metodą GET i można to przy pomocy pliku .htaccess rozbić na różne elementy zgodnie z NASZYM życzeniem. Np. W twoim przypadku możemy sprawdzić czy zaistniało słowo kluczowe /video/ i jeżeli tak, to wykonać skrypt video.php. Następnie możemy się zastanowić, czy chcemy, żeby dalsza część była przekazywana do skryptu czy jakoś przepisana. Ja proponuje w takich przypadkach przepisanie pomiędzy /video/ a .html tekstu do zmiennej strip. W ten sposób skrypt video.php będzie myślał, że otrzymał coś takiego:
www.mojastrona.pl/video.php?strip=samolot-sie-rozbil/
Mimo tego, że w przeglądarce wygląda to zupełnie inaczej. Taki przykład jak wyże w pliku htaccess będzie wyglądać następująco:
Kod
RewriteRule ^video/([^/]*).html$ video.php?strip=$1


Tłumaczę element po elemencie:
RewriteRule słowo kluczowe, nie podlega specjalnie dyskusji. Oznacza tyle, że chcemy przepisać wedle zasad podanych dalej w tej linijce
^video/([^/]*).html$ kod mający coś tam wspólnego z eregiem (nie będę się tutaj z nikim kłócić). Szukamy słówka video/ i coś cokolwiek (*) co nie będzie zawierało w sobie znaczka /, oraz ten ciąg zakonczy się .html (koniec oznaczony $ w tej sekcji, w kolejnej oznacza coś innego). Wytnie nam do zmiennej to co jest w nawiasie ([^/]*) czyli w skrócie mówiąc od video/ do .html czyli to co własciwie chcemy.
video.php?strip=$1 przepisujemy tutaj wszystko tak jak chcemy, czyli używamy skrypt video.php i podajemy mu metodą GET zmienną strip i przypisujemy jej zmienna $1. Zmienna ta to po prostu pierwsze wystąpienie nawiasów w poprzednim argumencie. Jeżeli było by ich wiecej, moglibyśmy je tutaj pokolei przepisywać w różny sposób i w różnej kolejności.

Cytat
Ja nie podaje przez GET nazwy samolot sie rozbil. Tylko tą wartość przyjmuje jakaś tam zmienna która jest wyciągana z bazy na podstawie ID. I tutaj moje pytanie czy bez podawania w GET tej nazwy jestem wstanie użyć zmiennej z nazwą do stworzenia linku "video/samolot-sie-rozbil"
Ja widziałem przykłady na stronach ale wszystkie były na podstawie podawanych parametrów GET. A ja bym chciał prosto ze zmiennych w kodzie.

Zatem Pana pytanie odnosi się do czegoś co nazywam osobiście "abstrakcją urojoną", czyli bez podstaw teoretycznych pyta Pan o rzeczy niemożliwe. Analizując Pana wypowiedź dochodzę do wniosku, że chce Pan przekazać jeden parametr z jednej strony do drugiej strony w linku, ale tak, żeby go nie było widać. Zatem czy nie jest to trochę bezsensowne? Jak można dać dziecku bułkę do szkoły, ale tak, żeby jej nie zauważyło że ją ma, nawet o tym nie wiedziało, ale koniecznie zjadło?



EDITED
Analizując ostatnią wypowiedź stwierdzam, że pytanie zostało teraz zadane poprawnie.

Odpowiedź na nie jest proste - wystarczy przebudować Pana skrypt tak, aby nie zadawał zapytania do bazy po numerze ID, ale po nazwie, którą Pan podaje. Ewentualnie (co raczej polecam) jest utworzenie linku w stylu:
www.mojastrona.pl/video/76/samolot-sie-rozbil.html
I w htaccess odpowiednio obsłużyć te zmienne, ale w skrypcie korzystać jedynie z ID. Użytkownik będzie widział jaki jest tytuł strony już w linku, a i skrypt otrzyma wymaganą przez siebie informację, czyli numer ID.

Ten post edytował Quadina 14.12.2010, 14:16:07
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 14:46