praegune kellaaeg 19.06.2025 21:23:51
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
redenergy
HV veteran

liitunud: 22.03.2004
|
04.06.2013 19:09:37
Clean URL - php ja htaccess |
|
|
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:
|
Options +FollowSymLinks RewriteEngine On # do not do anything if already existing file, symbolic link or directory RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule .+ - [L] # redirect clean url (/category) for processing RewriteRule ^([a-zA-Z0-9_-]+)$ ./index.php?id=$1 RewriteRule ^([a-zA-Z0-9_-]+)/$ ./index.php?id=$1 [L] # redirect clean url (/category/subcategory) for processing RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)$ ./index.php?id=$1&sub=$2 RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ ./index.php?id=$1&sub=$2 [L] RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)$ ./index.php?id=$1&teade=$2 RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ ./index.php?id=$1&teade=$2 [L]
|
Kui kustutan
php:
|
RewriteRule ^grupid/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ ./index.php?id=$1&sub=$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 |
|
 |
Fukiku
Kreisi kasutaja

liitunud: 06.11.2003
|
05.06.2013 09:40:44
|
|
|
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?
Ü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 |
|
 |
tiitise
HV kasutaja
liitunud: 04.03.2005
|
05.06.2013 11:43:15
Re: Clean URL - php ja htaccess |
|
|
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:
|
Options +FollowSymLinks RewriteEngine On # redirect clean url (/category) for processing RewriteRule ^([a-zA-Z0-9_-]+)$ ./index.php?id=$1 RewriteRule ^([a-zA-Z0-9_-]+)/$ ./index.php?id=$1 [L] # redirect clean url (/category/subcategory) for processing RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)$ ./index.php?id=$1&sub=$2 RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ ./index.php?id=$1&sub=$2 [L]
|
|
|
Kommentaarid: 6 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
6 |
|
tagasi üles |
|
 |
redenergy
HV veteran

liitunud: 22.03.2004
|
05.06.2013 13:54:21
|
|
|
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
|
|
Kommentaarid: 30 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
9 |
|
tagasi üles |
|
 |
Celos
Kreisi kasutaja

liitunud: 23.08.2005
|
05.06.2013 14:09:17
|
|
|
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 |
|
 |
Fukiku
Kreisi kasutaja

liitunud: 06.11.2003
|
05.06.2013 14:47:17
|
|
|
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. Palju õnne kaks aastat hiljem seda rakendust muutes või täiendades.
_________________ 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 |
|
 |
Celos
Kreisi kasutaja

liitunud: 23.08.2005
|
05.06.2013 15:50:10
|
|
|
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 |
|
 |
|
lisa lemmikuks |
|
|
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.
|