DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   Moze li ovo krace? (http://www.devprotalk.com/showthread.php?t=3281)

Pedja 31. 07. 2007. 16:15

Moze li ovo krace?
 
Ima li neko ideju moze li ovaj kod:

if (empty ($USER_DEFAULT_LANG_ID)) $USER_DEFAULT_LANG_ID = 'sr';
define ('DEFAULT_LANG_ID', $USER_DEFAULT_LANG_ID);

... da se zameni necim kracim?

Problem je sto $USER_DEFAULT_LANG_ID moze da bude nedefinisano, pa rvo mora da se to proveri i dodeli mu se podrazumevana vrenost pre definisanja konstante.

Imam gomilu konstanti koje treba na ovaj nacin da definisem i ima da se okilavim kucajuci... :)

Ilija Studen 31. 07. 2007. 16:23

Pod uslovom da ti $USER_DEFAULT_LANG_ID ne treba kasnije:

PHP kôd:

define('DEFAULT_LANG_ID', isset($USER_DEFAULT_LANG_ID) ? $USER_DEFAULT_LANG_ID 'sr'); 


Pedja 31. 07. 2007. 16:29

Odgovara :)

Nesto sam i ja izmajmunisao, lici mi da je malo prljavo ali kanda radi:

PHP kôd:


defineDefault
('DEFAULT_LANG_ID'$USER_DEFAULT_LANG_ID'sr');


function 
defineDefault ($p_const_name, &$p_value$p_default '') {

  if (empty (
$p_value)) $p_value $p_default;
    
define ($p_const_name$p_value);



Moze i bez & u definiciji parametara fukcije ali tada PHP prijavljuje Notice..

robi-bobi 01. 08. 2007. 11:39

^
aj ja da budem los, pa da predlozim da ne bude krace, nego da proveravas kukijem jel ranije korisnik birao vec neki jezik :)

ja uvek radim: jel ima jezika, ako ne onda kuki, ako ne, onda default

Pedja 01. 08. 2007. 12:30

Vise volim da to radim preko sesija, mada se svodi na isto.

No ovde se radi o necem drugom: podesavanju default vrednosti koja ce se primeniti ako korisnik nije izabrao nijednu.

Ovo je u stvari segment ucitavanja incijalizaciej programa i sluzi mi da obezbedim neku smislenu default vrednost za slucaj da je administrator sajta uopste nije podesio.

To sa jezikom kod korisnika sam tako i ja radio dok nisam naisao na par problema:

1. ako korisniku zapamtis izabrani jezik u cookie/session, onda u url-ovim jezik vise ne mora da figurira. Ako korsinik uzme link bez navedenog jezika i stavi ga negde drugde, to znaci da sa tog drugog mesta ne mora da se otvori dokument na jeziku koji je korisnik video.

Primer: korisnik je unapred izabrao da ce da korsiti srpski ali je default sajta engleski. Linko na kome on vidi dokument ne sadrzi definiciju jezika jer to vec ima u cookie-u. On iskopira adresu dokumenta i stavi link na neki drugi sajt. Kada neko na tom drugom sajtu klikne na link, on nema unapred podesen jezik, pa mu se otvori default a to je negleski a to nije ono sto je prvobitni korisnik postavljanjem linka hteo.

2. ako se informacija o jeziku prosledjuje kroz cookie/session onda on me mora da figurira u URL-u a to se direktno odrazava na SEO.

Ako se nastavimo na prethodni primer: pretrazivaci ce uvek videti samo default verziju sajta (engleski) osim ako negde ne nalete na link koji sadrzi i oznaku jezika, ali ce onda videti i razlicite sadrzaje na istoj adresi dokumenta.

Tako sam se ja odlucio da se drzim pravila da se u linku uvek sadrzi oznaka jezika, osim u slucaju ako se ne radi o default jeziku u kom slucaju oznaka jezika ne sme da se pojavljuje.

Na ovaj problem sam recimo naleteo na Vokabularu. U pocetku je korisnik na svakoj strani mogao da odabere da li ce latinicnu ili cirilicnu verziju, to je zapamceno u sesiji i u cookie tako da cak i svaki sledeci put kada dodje na sajt, vidi onu verziju koju je odabrao. Medjutim, pojavio se problem sto su ljudi tako stavljali linkove na sadrzaje ali koji nisu sadrzavali definiciju pisma pa su dobijali uvek cirilican sadrzaj koji je podrazumevani izbor. To sam izmenio tako da sada na Vokabularu svaki link sadrzi i odredjenje na kom pismu se prikazuje sadrzaj.

Ovo je inace zanimjiva tema koju mozda treba izdvojiti kao posebnu, jer je verovatno da su ljudi ovaj problem resavali na razlicite nacine, primenjujuci razlicitu logiku.

robi-bobi 02. 08. 2007. 12:06

sesija ne pamti sledecu posetu, zato je tu kuki
a i sta ce ti jezik u sesiji, kad ga imas u URL-u

iako jezik ne mora da figurira u url kad imas kuki, on moze da figurira ;)

uvek stavljas jezik u url, kuki je samo izmedju poseta. u prvom if-u proveravas za url jezik i gotovo

LiquidBrain 02. 08. 2007. 12:13

A i uvek mozesh da koristis geoIP da bi setovao default jezik na osnovu zemlje...

Mada to ne mora da znaci da je dobro resenje...

Pedja 02. 08. 2007. 12:50

Citat:

Originalno napisao robi-bobi (Napišite 39703)
uvek stavljas jezik u url, kuki je samo izmedju poseta. u prvom if-u proveravas za url jezik i gotovo

To je ok, samo nije bas u skladu s onim sto si prvo napisao :)

Citat:

Originalno napisao LiquidBrain
A i uvek mozesh da koristis geoIP da bi setovao default jezik na osnovu zemlje...

To mi se nikad anije svidjalo kao resenje.

Nego odosmo u offtopic, mogo bi moderator ovo da izdvoji u psoebnu temu.


Vreme je GMT +2. Trenutno vreme je 23:49.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.