Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] modrewrite a gety
Forum PHP.pl > Forum > Przedszkole
krzystyn
witam
zrobilem sobie regulki w htaccess i teraz mam ladne urle, ale wtedy oczywiscie powstaje problem z pobieraniem danych przez GETa

jak bylo:
http://strona.pl/show.php?id=3

to id mozna bylo pobrac $_GET['id']

a jak jest http://strona.pl/show,3.html

to najpierw musze pobrac REQUESTa, potem explode przecinek, a potem jeszcze kolejny explode kropka i dopiero wtedy mam wyciagniete ID, czyli 3. a to i tak skrocona wersja i niezbyt pewna. wystarczy ze zrobimy show,id,3.html i znowu kolejne regulki.

a moze jest jakis latwiejszy sposob na to?

przy okazji pytanie jeszcze jedno - jaki wyglad adresow stosowac najlepiej? wiem ze to odemnie zalezy, ale np jaki preferuje google?

adres.pl/show,id,3.html
adres.pl/show/id/3
adres.pl/show-id-3
modern-web
Ten adres.pl/show/id/3 sposób jest najbardziej przyjazny dla robotów indeksujących Twoją stronę.
W takim przypadku id możesz pobrać bezpośrednio za pomocą $_GET

Pozdrawiam!
krzystyn
wpisuje adres.pl/show/id/3

print_r($_GET)

pokazuje

Array ( [show_php] => )

wiec chyba tez sie nie da i znowu zabawa z explode, choc akurat w tym przypadku tylko raz wink.gif
mat-bi
Zrob dobrze .htaccess, to pogadamy.
krzystyn
Kod
RewriteEngine On
RewriteRule show/id/(.*) show.php?id=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /test/index.php?$1 [L]


takie mam. i jak wpisuje w adresie adres.pl/index.php?id=2 to GET bierze id, ale jak juz

adres.pl/show/id/2

to
Cytat
Array ( [show_php] => )

wiec jak to moge zrobic?

naprowadzi mnie ktos? bo od godziny swoje w miejscu i nie moge z tym ruszyc. szukalem na google, ale nie moge nic konkretnego znalezc, zebym chociaz wiedzial jak to nazwac.

panowie to moze ktos poda jakis prosty dzialajacy przyklad, bo probuje na wszystkie sposoby i nic....
modern-web
Pokaż fragment którym odbierasz $_GET smile.gif
krzystyn
  1. $url = $_GET['id']

wywala, ze nie zna id, no bo nie ma tam czegos takiego:

print_r($_GET);
Array ( [show_php] => )

zauwazylem jeszcze cos takiego, ze jak zrobie regulke:
RewriteRule show/id/1 show.php?id=1 [L]
i wpisze adres localhost/test/show/id/2
to wywala juz: Array ( [show/id/2] => )

a dla localhost/test/show/id/1 znowu Array ( [show_php] => )


plik show.php mam w katalogu localhost/www/templates/show.php ale poza tym ze nie dziala pobieranie ID po get to wszstko sprawuje sie swietnie i tak jak chcialem
mat-bi
Masz jakoś dziwnie zrobione. Specjalnie do testów wrzuciłem linijkę do .htaccess twoją i plik show.php zrobiłem, wyświetlający $_GET['id']. Pokazuje mi normalnie
krzystyn
moglbys wkleic to z Twoich testow? zrobie na podstawie tego co masz i moze mi wyjdzie, a jak nie to moze mam cos z WAMPem.

dzieki z gory
mat-bi
.htaccess

Kod
RewriteEngine On
RewriteRule show/id/(.*) show.php?id=$1 [L]


show.php

  1. <?php
  2.  
  3. echo $_GET['id'];
krzystyn
dzieki za zainteresowanie, juz mi to dziala. zmienilem regulke na:

RewriteRule show/id/(.*) index.php/show.php?id=$1 [L]
i jest ok, ale mam jeszcze jedno pytanie:

w indexie chce zrobic routing czy cos w tym stylu, czyli ze jak jak w adresie bedzie localhost/show/id/3 to ma mi wywolac funkcje ktora mi podbierze dane z bazy itp itd

i teraz robie tak:

  1. if ($uri == '/show/id/2' ) {
  2. //pobierz itp itd;


i da sie teraz to zrobic jakos, zeby dzialalo dla kazdego? cos w stylu wyrazen regularnych jak w htaccess, czyli bym zrobil tak>:

  1. if ($uri == '/blog/show/id/*' )


czy pozostaje to dzielic przez explode?
mat-bi
preg_match
krzystyn
znalem to, ale jak to zastosowac w tym przykladzie, bo jakos nie moge nic wymyslic sensownego
nekomata
http://nospor.pl/ladne-urle.html Może to ci pomoże.
krzystyn
to juz calkiem inny system, wolalbym to zrobic tak jak mam teraz, wiec jak to rozwiazac?

panowie mam kolejny problem sad.gif

Kod
Options +FollowSymLinks +ExecCGI

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule show/(.*) index.php/templates/show.php?id=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /test/index.php?$1 [L]
</IfModule>


linki generuje w ten sposob:
  1. <a href="show/<?php echo $post['id'] ?>.html"> <?php echo $post['tytul'] ?> </a>



i teraz jak wejde w np http://localhost/test/show/1.html to dziala ok, a jak w menu wyswietlona reszte linkow to sie tworza tak: http://localhost/test/show/show/38.html . klikam znowu w linka i powstaje http://localhost/test/show/show/show/38.html
czyli z kazda strona sie dodaje /show/
jak zmienie generowanie linkow na:
  1. <a href="http://localhost/test/show/<?php echo $post['id'] ?>.html"> <?php echo $post['tytul'] ?> </a>


to dziala dobrze, ale to nie jest zbyt dobre rozwiazanie...



a moze zamiast wpisywania wszedzie http://localhost/test/show/ da sie to jakos zamienic jakas zmienna? na pewno da sie jakos pobrac caly adres aktualnego folderu?
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.