Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Clean URL - php ja htaccess märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
redenergy
HV veteran
redenergy

liitunud: 22.03.2004




sõnum 04.06.2013 19:09:37 Clean URL - php ja htaccess vasta tsitaadiga

Tervist, üritan URL "ilusaks" teha ja otsimootori sõbralikuks.
Aga tekib konflikt, kui üritan teadet kasutajale esitada.

www.näide.ee/index.php?id=avaleht&teade=1 (näide.ee/avaleht/1/)
peaks avalehel kasutajale teate esitama, et on sisselogitud.
teadetel on eraldi teated.php fail, millest võetakse numbrile vastav teade, ning mis on includetud index.php.

millega konflik tekib on
www.näide.ee/index.php?id=grupid&sub=grupp (näide.ee/grupp/1/)

.htacess fail on kujul:

php:
  1. Options +FollowSymLinks
  2. RewriteEngine On
  3.  
  4. # do not do anything if already existing file, symbolic link or directory
  5. RewriteCond %{REQUEST_FILENAME} -f [OR]
  6. RewriteCond %{REQUEST_FILENAME} -l [OR]
  7. RewriteCond %{REQUEST_FILENAME} -d
  8. RewriteRule .+ - [L]
  9.  
  10. # redirect clean url (/category) for processing
  11. RewriteRule ^([a-zA-Z0-9_-]+)$ ./index.php?id=$1
  12. RewriteRule ^([a-zA-Z0-9_-]+)/$ ./index.php?id=$1 [L]
  13.  
  14. # redirect clean url (/category/subcategory) for processing
  15.  
  16. RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)$ ./index.php?id=$1&sub=$2
  17. RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ ./index.php?id=$1&sub=$2 [L]
  18. RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)$ ./index.php?id=$1&teade=$2
  19. RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ ./index.php?id=$1&teade=$2 [L]
  20.  


Kui kustutan
php:
  1. RewriteRule ^grupid/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ ./index.php?id=$1&sub=$2
  2. RewriteRule ^grupid/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ ./index.php?id=$1&sub=$2 [L]

rea siis hakkab teate süsteem tööle ja vastupidi.

Ise vaikselt õpin seda asja, ehk keegi oskab aidata.

Tänan
Kommentaarid: 30 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 9
tagasi üles
vaata kasutaja infot saada privaatsõnum
Fukiku
Kreisi kasutaja
Fukiku

liitunud: 06.11.2003




sõnum 05.06.2013 09:40:44 vasta tsitaadiga

Ma rewrite reeglite osas väga kommentaarida ei oska. Küll aga soovitaks natuke üldisemas plaanis seda, et mingeid teateid juhtida GET parameetriga ei ole võibolla kõige parem idee. Üldiselt rusikareegel võiks minu arvates olla see, et GET parameetreid kasutada ainult neil juhtudel, kui kasutajal on midagi ka selle URL-iga reaalselt teha, kuhu see GET viib. Kas endale järjehoidja salvestada brauseris, sõbrale jagada vms. variant. Kogu ülejäänud sisuline ja tehniline info võiks liikuda POST-i kaudu või olla suisa sessioonis hoitud. Vajadust linkida lehele, mis kuvab sisselogimise teadet, justkui ei tohiks kellelegi olla. Rääkimata sellest, et selline URL-i kaudu teadete kuvamine võib ka tekitada mõningaid probleeme pahatahtlike kasutajatega, kes näiteks nuputavad välja mingi teate id ja siis konstrueerivad pahaaimamatule kasutajale URL-i, mis kuvab nende poolt valitud teateid nende poolt valitud lehel.. ja äkki motiveerib kasutajaid lollusi tegema? Selle mehhanismi juures sa ju tõenäoliselt enam koodis ei kontrolli, et kui teate id on 1, et kas sellel lehel on üldse sisulist mõtet seda teadet kuvada? icon_smile.gif

Üks variant teadete kuvamiseks oleks kõik teated töö käigus sessiooni toppida ja uuel lehel sealt nad välja lugeda ning sessioon puhtaks teha. Peaks suht lollikindel olema.

_________________
Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
tiitise
HV kasutaja

liitunud: 04.03.2005



Autoriseeritud ID-kaardiga

sõnum 05.06.2013 11:43:15 Re: Clean URL - php ja htaccess vasta tsitaadiga

redenergy kirjutas:
Tervist, üritan URL "ilusaks" teha ja otsimootori sõbralikuks.
Aga tekib konflikt, kui üritan teadet kasutajale esitada.

www.näide.ee/index.php?id=avaleht&teade=1 (näide.ee/avaleht/1/)
peaks avalehel kasutajale teate esitama, et on sisselogitud.
teadetel on eraldi teated.php fail, millest võetakse numbrile vastav teade, ning mis on includetud index.php.

millega konflik tekib on
www.näide.ee/index.php?id=grupid&sub=grupp (näide.ee/grupp/1/)


Kas sellest ei piisa kui kontrollid id-le antud muutujat, et kas on avaleht või grupp ja vastavalt sellele näitad soovitud lehte ning veateadet?

php:
  1. Options +FollowSymLinks
  2. RewriteEngine On
  3. # redirect clean url (/category) for processing
  4. RewriteRule ^([a-zA-Z0-9_-]+)$ ./index.php?id=$1
  5. RewriteRule ^([a-zA-Z0-9_-]+)/$ ./index.php?id=$1 [L]
  6.  
  7. # redirect clean url (/category/subcategory) for processing
  8.  
  9. RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)$ ./index.php?id=$1&sub=$2
  10. RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ ./index.php?id=$1&sub=$2 [L]
  11.  
Kommentaarid: 6 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 6
tagasi üles
vaata kasutaja infot saada privaatsõnum
redenergy
HV veteran
redenergy

liitunud: 22.03.2004




sõnum 05.06.2013 13:54:21 vasta tsitaadiga

Kuna gruppide alt on tarvis ka teateid kuvada, siis võib olla tõesti on mõistlikum see sessioonidega lahendada.
Asi läheks liiga keeruliseks ja htaccess fail tuleks mahukas ma arvan.

Tänan vastuste eest thumbs_up.gif
Kommentaarid: 30 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 9
tagasi üles
vaata kasutaja infot saada privaatsõnum
Celos
Kreisi kasutaja
Celos

liitunud: 23.08.2005




sõnum 05.06.2013 14:09:17 vasta tsitaadiga

Teadete kohta lisaks niipalju, et neid salvestada on üldse veidi kahtlane. Eeldatavasti näitad teateid mingite eelnõuete täitumisel (nt. sisselogimine). Seega oleks nii turvalisem kui ka mõistlikum vajalikus kohas lihtsalt kontrollida, kas need nõuded on täidetud ja vastav sõnum kuvada. Ehk koodis
if( $loggedIn )  { displayMessage('loggedIn'); }
tüüpi asi (kuidas iganes sul see seal esindatud on). Ilmselgelt on raske süsteemi loogikat nägemata kommenteerida, kas selline lähenemine sul praegu põhjendatud on, aga esialgu tundub, et mitte.
Kommentaarid: 16 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 15
tagasi üles
vaata kasutaja infot saada privaatsõnum
Fukiku
Kreisi kasutaja
Fukiku

liitunud: 06.11.2003




sõnum 05.06.2013 14:47:17 vasta tsitaadiga

Celos kirjutas:
Teadete kohta lisaks niipalju, et neid salvestada on üldse veidi kahtlane. Eeldatavasti näitad teateid mingite eelnõuete täitumisel (nt. sisselogimine). Seega oleks nii turvalisem kui ka mõistlikum vajalikus kohas lihtsalt kontrollida, kas need nõuded on täidetud ja vastav sõnum kuvada. Ehk koodis
if( $loggedIn )  { displayMessage('loggedIn'); }
tüüpi asi (kuidas iganes sul see seal esindatud on). Ilmselgelt on raske süsteemi loogikat nägemata kommenteerida, kas selline lähenemine sul praegu põhjendatud on, aga esialgu tundub, et mitte.
Eks see on jälle valikute küsimus. Senises kogemuses enamik veebiraamistikke siiski paistavad sisaldavat mingi mehhanism'i kus töö käigus saad mingi addMessage() tüüpi funktsiooniga vastavalt vajadusele sõnumeid kuhugi toppida ja järgmisel kuval näidatakse need kõik korraga ära. Vähegi keerulisemas rakenduses tasuks see kuidagi ära ühtlustada, et igal pool saad sama loogikaga läheneda. Selleks olekski vaja põhimõtteliselt kahte asja - esiteks mingi addMessage() funktsiooni, soovi ja vajaduse korral ka lisaparameetriga et sõnumitüüpe eristada (info, hoiatus, viga nt) ja teiseks kuskil päises placeholderit, mis alati kuvab kõik teated ära (taaskord sõnumitüüpidega arvestades ja neid näiteks erinevalt värvides), mis parasjagu mälus on. Muidu sa jäädki neid if'e igal poole kirjutama.

Kasvõi see sama sisse logimise teade, seda ju tegelikult ei ole vaja alati vaid ainult peale sisse logimist esimesel korral. Seega pead sa kuidagi veel detekteerima seda, et kas tullakse login formilt või jõuti samasse kohta ringiga hiljem tagasi. Koodi hallatavuse kohalt on palju mõistlikum see teate lisamine login controlleri lõppu panna - siis on ka kõik sisuliselt seotud asjad ühes kohas, muidu ju jälle see segadus, et kogu login loogika on ühes kohas ja siis mingis täiesti suvalises teises kohas on kolm rida koodi, et logimise õnnestumise kohta teadet kuvada. icon_smile.gif Palju õnne kaks aastat hiljem seda rakendust muutes või täiendades. icon_smile.gif

_________________
Foxic is just a simple fox
Enne kui sa küsid oma küsimuse - küsi seda vannipardilt! Rangelt soovitatav enne programmeerimise alafoorumisse uue teema tegemist.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
Celos
Kreisi kasutaja
Celos

liitunud: 23.08.2005




sõnum 05.06.2013 15:50:10 vasta tsitaadiga

Tundub, et väljendasin end segaselt. Loomulikult on mõistlik (ja vajalik) kogu süsteem abstrahheerida. Samuti on hea tava näidata kõiki mingi lehe laadimise hetkel tekkinud teateid ühes kohas. See ei välista kuidagi kontrolli tegemist lõpp-punktis (e. redirect -> kontroll -> näitamine vs. kontroll -> redirect -> näitamine).
Kommentaarid: 16 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 15
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Clean URL - php ja htaccess
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.