Jump to content
php.lv forumi
Sign in to follow this  
anonīms

cakePHP

Recommended Posts

Lieta sekojoša, ka nepieciešams userim, kas nav no LV pirmajā reizē redirektot uz angļu valodu ar noteiktu saturu.

 

 $root = $_SERVER['DOCUMENT_ROOT'].'/app/webroot';
 include($root."/geoip.inc");
 $gi = geoip_open($root."/GeoIP.dat",GEOIP_STANDARD);
 $geoip_country = geoip_country_name_by_addr($gi,$_SERVER['REMOTE_ADDR']);
 $def_lang = $this->Session->read('def_lang');
if(empty($def_lang) AND $geoip_country != 'Latvia') {
	$this->Session->write('def_lang', 'en');
	header("Location: /en/201035");
}

 

problēma ir tur, ka neuzstādās sesija. Kādēļ tas varētu būt?

Kas varētu būt nepareizi? viss šis kods tiek mests

app_controlller_front.php failā, bet tam šeit nav nozīmē šķiet, ka.

Share this post


Link to post
Share on other sites

ja angļu valoda ir defaultā,tad loģiskāk liekas:

if(empty($def_lang) OR $geoip_country != 'Latvia') {

Savādāk izskatās izmaiņas netiks veiktas,ja kaut kādu iemeslu dēļ sesijā jau atrodas 'def_lang' ieraksts.

Share this post


Link to post
Share on other sites

ne par to šeit ir stāsts. Par to, ka sesija netiek "ierakstīta".

un nē, tavs nav īpaši loģiski.

A ja no ārzemēm ienāk latvietis? tad nu nekādi sanāk, ka netiks pie savas kārotās LV valodas, jo def lang nav valoda, tas ir vnk status, ka cilvēks pirmo reizi ir iegājis lapā.

Share this post


Link to post
Share on other sites

Tādā gadījumā protams.Vienkārši spriedu pēc tā,ka jāpiepildās abiem nosacījumiem - nav uzstādīts def lang un GeoIP nav noteicis Latviju. Ja ar to viss ir ok,un sesija tāpat nerakstās,tad vairāk no šī koda neko izsecināt manuprāt nevar.

Edited by 404

Share this post


Link to post
Share on other sites

Un kāpēc sesija netiek ierakstīta? Tam vispār ir kaut kāds sakars ar šo koda gabalu, vai arī tu vienkārši nemāki veikt elementāru atkļūdošanu?

 

Nu tad uzraksti šīs rindiņas un pārbaudi, vai tiešām sesija netiek ierakstīta, vai arī konstrukciju loģika vienkārši klibo.

 

// Pārbaudam vai ir ierakstīts
var_dump($this->Session->read('def_lang'));
// Ierakstam sesijā
$this->Session->write('def_lang', 'en');

 

Share this post


Link to post
Share on other sites

Tur jau tā lieta, ka cakePHP esmu strādājis salīdzinoši maz.

Ja pirms dump'a ierakstu sesijā, tad viņš rādas, bet tikko kā notiek refresh, tā atkal pazūd, ja nemaldos. Tāpēc domāju vai kāds, kas strādājis ar cakePHP arī ir saskāries ar ko līdzīgu.

Share this post


Link to post
Share on other sites

Šai problēmai visticamāk nav nekādas saistības ar cakePHP, imo kļūda būs kaut kur loģikā.

Tobiš, vajag apskatīties kur tas sesijas mainīgais vispār tiek ierakstīts (vai cookijā, vai arī caur sesijas failā uz servera). Kā arī vajag nočekot vai gadījumā sesijas id nemainās pēc tā redirekta.

Share this post


Link to post
Share on other sites

Kas konfigā ir norādīts pie "Session.save" un pārējiem Session.* parametriem?

Visam jāūt iekš app/config/core.php

 

Un vai debug ir ieslēgts? Ja sesiju glabāšanai paredzētajā folderī nav rakstīšanas tiesību, un debug līmenis ir 0, tad varētu arī sesijas nofeilot bez brīdinājuma.

Share this post


Link to post
Share on other sites

Configure::write('Session.save', 'php');
Configure::write('Session.start', true);

Configure::write('Session.cookie', 'CAKEPHP');
Configure::write('Session.timeout', '180');
Configure::write('Session.start', true);

 

Nu ir tā, ka ir citas sadaļas, kur tiek izmantots tas pats un tur viss strādā. (Tās sadaļas gan ir sen taisītas un ne no manas rokas).

 

debug 0, jā. Katrā ziņošu, ja būs kādas problēmas un vajadzēs kko.

Edited by anonīms

Share this post


Link to post
Share on other sites

Nu tur viss izskatās ok, vienīgi viena rinda atkārtojas divreiz, bet tas nu tā.

 

To debug izstrādājot gan vajadzētu pamainīt vismaz uz 1, citādi kļūdu gadījumā paziņojumus neredzēt.

0 - izslēgts, produkcijas videi

1 - kļūdu paziņojumi, netiek izmatots modeļu cache

2 - tas pats kas 1 + db kveriju dumps

Share this post


Link to post
Share on other sites

Tāds jautājums! Kāda jēga iespringt un mēģināt noteikt kādā valodā userim parādīt lapu izejot no viņa IP?

Protams no vienas puses jau forši, ka ieej lapā un tev viņa uzreiz saprotamā valodā, bet ja lapa starptautiska, tad loģiskāk būtu default uslikt ENG un ja nu gadās, ka user grib kādu citu no piedāvātajām, tad to iemetam pietiekami pamanāmā vietā. Ja lapa ir orientēta uz LV tad DEFAULT liekam LV un kam nepatīk, lai maina. Tāpat visus 100% nenosegsi, lai būtu tā, ka latvietis ienākot dabūs LV. Ja dzīvoju ārpus LV un no ārzemnieka paziņas PC ievelkos tādā lapā, cik liela iespēja, ka kompis, nemaz nerunājot par serveri, izpīpēs, ka tur viens letiņš sēž?! Man no vienas puses liekas, ka tā tik papildus problēmas radīšana.

Off topik, bet šis liekas, ka varētu būt līdzīgs variantam, kad vēlamies lietotājam, kas ir atslēdzis visus javascript un pārējās fīčas nodrošināt tieši tādu pašas lapas izskatu un funkcionalitāti, kā tiem, kas viss ieslēgts.

Pie lieliem lapas apmeklējumiem vienmēr būs neapmierināto bariņš. Ja pamata masa ir apmierināta, tad jāpadomā vai ir jēga iespringt to dažu procentu dēļ!

Bet tas tik mans vidoklis par tēmu.

Share this post


Link to post
Share on other sites

Par valodām, variants ir skatīties pārlūka valodu, un defaultā izmantot to. Tomēr, tā var būt arī greiza, tāpēc noteikti vajadzētu nodrošināt to, ka lietotājs var ātri pamanīt veidu, kā lapā valodu nomainīt.

 

Par JS - nezinu, man liekas, ka jau ir pienākuši tādi laiki, ka JS ir principā visam, pat telefoniem, tāpēc es, personīgi, ignorēju bez-JS lietotājus.

Pamata funkcionalitāti protams var mēģināt nodrošināt bez JS, bet ja visa lapa bāzēta uz JS, tad varētu būt reāls čakars, kas nez vai kādreiz attaisnosies to pāris lietotāju dēļ...

Share this post


Link to post
Share on other sites

> Par valodām, variants ir skatīties pārlūka valodu, un defaultā izmantot to.

 

Kā var uzzināt pārlūka valodu? :O

 

Par JavaScript es vismaz daru tā, ka, kā jau briedis minēja, nodrošinu lapas funkcionalitāti arī bez JavaScript, bet viss skaistāk un funkcionālāk, protams, strādā ar JavaScript. Darbā strādāju pie lapas, kura kā tāda strādā tikai ar ieslēgtu JavaScript — tā kā izņēmumi arī ir. :)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...