2010-10-10 15 views
5

Chcę wiedzieć, w jaki sposób mogę przekazać parametry między stronami za pośrednictwem adresu URL bez konieczności dodawania zmiennych np:parametry PHP przechodząc przez URL

mydomain.com/file.php?var1=val1&var2=val2&...varN=valN 

chcę go używać w następujący sposób:

mydomain.com/file.php?val1-val2-...-valN 

widzę też w pewnym stronie URL jest w następującym formacie

mydomain.com/file/#### 

który przekierowuje na inną stronę bez Chang adres URL tak, jakby był to adres URL pliku.

Odpowiedz

12

Należy użyć .htaccess

Oto przykład:

Options +FollowSymLinks 
RewriteEngine On 

RewriteRule ^([0-9-_]+)/([a-zA-Z0-9-_]+)/?$ index.php?var1=$1&var2=$2 [NC,L] 

Oznacza, że ​​jeśli adres URL jest sformatowany zgodnie z wyrażeń regularnych powyżej (Number - slash - alfanumeryczne, myślniki lub podkreślenia) niż zawartość powinna być wyświetlana z index.php podczas przekazywania pliku dwa parametry o nazwie var1 i var2, var1 o wartości liczby, a drugi o wartości po pierwszym ukośniku.

Przykład:

mysite.com/20/this_is_a_new_article/ 

faktycznie oznaczać

mysite.com?var1=20&var2=this_is_a_new_article 

oczywiście w pliku index.php można po prostu przyjmować wartości z wykorzystaniem

$var1 = $_GET['var1']; 
$var2 = $_GET['var2']; 

Cheers!

+0

Czytałem gdzieś, że odbywa się to przez PHP i widziałem przykład, ale nie mogę go znaleźć po zmianie mojego komputera :(... to dlatego chcę to zrobić za pomocą PHP ... co ja pamiętaj o tym, że użył funkcji eksplodującej ... – sikas

+1

Możesz to zrobić za pomocą PHP, ale nie poleciłbym go, ale możesz po prostu użyć $ _SERVER ['REQUEST_URI'] i rozbić wynik Przykład: explode ('/', $ _SERVER ['REQUEST_URI']); To zwróci tablicę, której możesz użyć, ale potrzebujesz htaccess do przekierowania każdego adresu URL na stronę, na której umieścisz ten kod. Możesz również użyć http: // ie.php.net/manual/en/function.parse-url.php – Claudiu

+0

Hej, bt jeśli przekażę tylko jeden parametr w adresie URL zamiast 2, to pokazuje błąd 404. Jakie może być na to rozwiązanie? Coz chciałbym kiedyś przekazać 1 zmienna czasami 2 lub więcej co wtedy? –

0

Twój trzeci przykład jest przykładem tego, w jaki sposób REST identyfikuje zasoby po stronie serwera. To, o czym tu mówisz, brzmi bardzo podobnie do REST, jeśli zrobisz to, co chcesz. Proponuję zacząć tutaj (http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_web_services).