Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] zmienna w adresie oraz mod_rewrite
Forum PHP.pl > Forum > Przedszkole
!*!
przykładowy adres strony:

Cytat


Jak można zrobić myk, aby w miejscu "cos" możnaby wpisać cokolwiek, ale php odczyta to jako zmienna get, a nie katalog... ? Chciałbym tym sposobem uprocić odszukiwanie danych.

A druga sprawa, jesli katalog ma chmod 0777, w nim są pliki które mają chmod 0644 to katalog można usunąć łacznie z zawartością?
erix
Cytat
Jak można zrobić myk, aby w miejscu "cos" możnaby wpisać cokolwiek, ale php odczyta to jako zmienna get, a nie katalog... ?

mod_rewrite, było już w chorobę tego...

Cytat
A druga sprawa, jesli katalog ma chmod 0777

Wyguglaj. winksmiley.jpg
!*!
emm jeśli mam linki:

Kod
index.php?dom=raz
index.php?dom=dwa
index.php?dom=trzy


to w .htaccess ustawiam:

Kod
RewriteEngine On
RewriteRule ^(raz)$ /?raz=$1
RewriteRule ^(dwa)$ /?dwa=$1
RewriteRule ^(trzy)$ /?trzy=$1


?

ok, ale czasami bywa tak że mam link:

Kod
index.php?dom=raz&willa=dwa&poziomy=cztery&basen=tak


ale może zdarzyć się tak że kilku zmiennych w adresie nie będzie, jak wtedy zapisać to poprawnie?
hiszpanespaniol
chyba namieszałeś z mod rewrite.

linki powiny być w tej postaci, jak pisałes na początku, czyli

  1. /willa
  2.  
  3. czyli w html robisz:
  4.  
  5. <a href="/willa">willa</a>


i z tak zbudowanym htaccess jak podałeś odwołasz się do index.php z takim GET'em: raz=raz albo dwa=dwa

zamiast "raz" w nawiasie daj "willa" czy cokolwiek
!*!
Racja mój błąd, wyżej powinno być:

Kod
RewriteEngine On
RewriteRule ^(raz)$ /?dom=$1
RewriteRule ^(dwa)$ /?dom=$1
RewriteRule ^(trzy)$ /?dom=$1


wtedy adres wyglada np. tak:

Kod
http://adres.com/trzy


i odczytuje:

Kod
http://adres.com/index.php?dom=trzy

Jednak co zrobić w przypadku większej ilości GETów? które nie zawsze pojawiają się w adresie? A i czy muszę zamienić te linki w kodzie strony? Nie można tego jakoś zamienić automatycznie w php?
hiszpanespaniol
z wyrażeń regularnych nie jestem dobry, niech się wypowie ktoś kto sie zn na nich. ale jest mozliwość taka jak chcesz. znak zapytania "mówi" ze coś co jest przed nim nie musi wystapić.

co do większej ilości GETów, ustal sobie ich porządek że np zawsze pierwszy GET to ogólne info o domu, drugi, to zdjęcia, trzeci cena. w PHP if(isset($_GET['cena'])) i tyle. jednak kolejność musi być zachowana. ewentualnie możesz zrobić taki myk który omija ten problem, że zeby wyświetlić cenę musisz 3 GETy podać, mianowicie tworzysz takie linki: /cena/domnr3 i wtedy pierwszy GET odpowiada za akcję, drugi za dom którego ona dotyczy.

linki musisz przerobić ręcznie
!*!
ehh

powiedzmy ze link wyglada tak:

Kod
http://localhost/index.php?d3q7832h87=home


d3q7832h87 - to ciąg liczb generowanych losowo

chciałbym to zamienić na

Kod
http://localhost/bleble,d3q7832h87,home


Jendak nie wiem jak

Kod
RewriteRule ^(bleble)$ /index.php?


i jak dopisć do tego zmienną ? %{$zmienna_generujaca_losowy_ciag_znakow}
hiszpanespaniol
znowu mieszasz w mod rewrite.
mod_rewrite działa na chłopski/mój rozum mniej-więcej tak:
jeśli w urlu znajdę to co jest w pierwszej części rewriterule i istnieje plik który jest w drugiej części, to przepisuję link.
A Ty piszeszcoś czego nie może odczytać.
najlepiej przeczytaj kurs mod_rewrite bo tu Ci nikt nie będzie tłumaczył skoro są kursy od tego napisane fachowo i okomentowane od stóp do głów.

na dodatek podałeś przykład linka w którym nazwa (nie wartość) zmiennej GET jest generowana losowo, to już poezja jest całkowita.

edit:
nawet jeśli losową nazwę zmiennej GET przechowasz w sesji zeby później w nią trafić zczytując GET, to i tak sesja php nie działa w .htaccess więc nici z tego
!*!
tak, zmienna jest w sesji... heh czyli, jeśli w adresie mam taką zmienną do mod_rewrite staje się bezużyteczny?
hiszpanespaniol
według mnie główną zaletą rewrite jest to, że można ukryć nazwy zmienych i to, że adresy są przyjazne. z takim podejściem do mod_rewrite jakie pokazałeś, rzeczywiście jest on bezużyteczny. nie ma tu uszczypliwości w mojej wypowiedzi, po prostu zaszła pomyłka w rozumieniu mod_rewrite winksmiley.jpg

edit:
a ja siedziałem i myslałem jak pomóc
!*!
Doceniam smile.gif

Nie zależy mi na przyjaznych urlach, ale nie chce mieć też 50 zmiennych z wartościami winksmiley.jpg generacja nazwy geta losowego jest formą zabezpieczenia przed zabawą z linkiem.

Zastanawiam się teraz jak te linki pozamieniać na jakieś sensowene z poziomu php....
hiszpanespaniol
pamiętaj też o tym, że wyszukiwarki tego nie zindeksują. bot mając "wyłączone" ciasteczka nie przekaże numeru sesji do serwera i dzięki temu nigdy nie trafi ze zmienną GET. ta strona momentalnie zniknie z google bo każde jej wywołanie będzie pierwszym wywołaniem tworzącym sesje, ale bez jej zapisania w ciasteczku. teraz żegnam bo na ósmą do pracy :/
!*!
właśnie na indeksowaniu przez bota tej strony mi nie zależy, przeciwnie winksmiley.jpg główna strona tam gdzie jest index może być zaindeksowana bez problemu, a strona z GETem zmiennym należy do innego pliku, więc indeksowanie jej nie obejmie.
tiraeth
Potrafisz korzystać z wyszukiwarki?

http://www.googlesyndicatedsearch.com/u/fo...ch=forum.php.pl

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