Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] modrewrite a gety
krzystyn
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 1
Dołączył: 2.04.2011

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


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
Go to the top of the page
+Quote Post
modern-web
post
Post #2





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


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!


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post
krzystyn
post
Post #3





Grupa: Zarejestrowani
Postów: 26
Pomógł: 1
Dołączył: 2.04.2011

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


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
Go to the top of the page
+Quote Post
mat-bi
post
Post #4





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


Zrob dobrze .htaccess, to pogadamy.
Go to the top of the page
+Quote Post
krzystyn
post
Post #5





Grupa: Zarejestrowani
Postów: 26
Pomógł: 1
Dołączył: 2.04.2011

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


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....
Go to the top of the page
+Quote Post
modern-web
post
Post #6





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


Pokaż fragment którym odbierasz $_GET smile.gif


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post
krzystyn
post
Post #7





Grupa: Zarejestrowani
Postów: 26
Pomógł: 1
Dołączył: 2.04.2011

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


  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
Go to the top of the page
+Quote Post
mat-bi
post
Post #8





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


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

Ten post edytował mat-bi 11.04.2011, 21:08:51
Go to the top of the page
+Quote Post
krzystyn
post
Post #9





Grupa: Zarejestrowani
Postów: 26
Pomógł: 1
Dołączył: 2.04.2011

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


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
Go to the top of the page
+Quote Post
mat-bi
post
Post #10





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


.htaccess

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


show.php

  1. <?php
  2.  
  3. echo $_GET['id'];


Ten post edytował mat-bi 11.04.2011, 21:12:40
Go to the top of the page
+Quote Post
krzystyn
post
Post #11





Grupa: Zarejestrowani
Postów: 26
Pomógł: 1
Dołączył: 2.04.2011

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


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?
Go to the top of the page
+Quote Post
mat-bi
post
Post #12





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


preg_match
Go to the top of the page
+Quote Post
krzystyn
post
Post #13





Grupa: Zarejestrowani
Postów: 26
Pomógł: 1
Dołączył: 2.04.2011

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


znalem to, ale jak to zastosowac w tym przykladzie, bo jakos nie moge nic wymyslic sensownego
Go to the top of the page
+Quote Post
nekomata
post
Post #14





Grupa: Zarejestrowani
Postów: 314
Pomógł: 44
Dołączył: 12.11.2010
Skąd: UK

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


http://nospor.pl/ladne-urle.html Może to ci pomoże.
Go to the top of the page
+Quote Post
krzystyn
post
Post #15





Grupa: Zarejestrowani
Postów: 26
Pomógł: 1
Dołączył: 2.04.2011

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


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?

Ten post edytował krzystyn 12.04.2011, 16:27:03
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 19:44