stílus tárolása és kivétele cookieból

Szerző
Üzenet
se7enth
Kezdő phpBB-s
Kezdő phpBB-s


Csatlakozott: 2007.12.03. Hétfő 21:18
Hozzászólások: 30
Hozzászólás Elküldve: 2007.12.29. 00:54    Hozzászólás témája: stílus tárolása és kivétele cookieból
Hozzászólás az előzmény idézésével
Sziasztok
Az alaphelyzet a köv.
A fórumban van 3 stílus. Nos én azt szeretném, ha a user stílusát eltárolná egy cookie, s mikor a user visszatér, és még nem lép be, akkor ne a $board_config['default_style']-t töltse be alapból, hanem keresse ki az értéket a cookieból. Van egy hasonló téma ami alapján el is kezdtem, de elakadtam. Lehet, hogy megint olyan hiba, ami kinyomja a szemem, de ne jövök rá:
Úgy gondoltam 3 helyen kéne módosítanom:

1: ahol betölti a 'default_style'-t, amikor az user még nem lépett be
Ez ha jól látom a function.php

Kód:

         if ( $theme = setup_style($userdata['user_style']) )
         {
            return;
         }

kódja után. Ide kell egy cookie készítés, már ha nincs már meg

2: nem sokkal alatta

Kód:

$theme = setup_style($board_config['default_style']);

Itt még nem lépett be az user,tehát kell egy cookie olvasó. Ha nincs akkor marad a 'default_style'.

3: ezt még nem néztem meg hol van, de ahol módosítja az user a stílusát. Ha módosít akkor változzon a cookie is.

Van valami ötletetek?
Előre is köszi.

Felhasználó profiljának megtekintése Privát üzenet küldése
kislab
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2007.03.23. Péntek 16:52
Hozzászólások: 573
Hozzászólás Elküldve: 2007.12.29. 02:22    Hozzászólás témája:
Hozzászólás az előzmény idézésével
Hi

Én annyit tudok mondani neked, hogy esetleg a következőképpen lehetne megoldani a dolgot:

Az oldal beállít egy sütit, amikor a felhasználó a profiljában kiválasztja a stílust. Ez a profile.php-ben van valahol. Ezután az user álltal beállított stílus id-jét lementi egy sütibe:

Kód:

setcookie("phpbb_style", $style_id, time()+60*60*24*365*2);

Ezután ahova te is írtad beteszünk egy olyan kódot, hogy:

Kód:


$style_sql = "SELECT * FROM THEMES_TABLE WHERE theme_id = $_cookie[phpbb_style]";
$result = mysql_query($style_sql);
while($x = mysql_fetch_array($result))
   {
   $cookie_style = $x[0];
   }


És utána jön az, amit írtál, egy kicsit másképp

Kód:

$theme = setup_style($cookie_style);

Megjegyzés: Az egész kód úgy rossz, ahogy van. Természetes, hogy az ember hajnali kettőkor nem kezd el forráskódokat olvasgatni, és megérteni. Amiket írtam, erős javításra szorul, de azért útmutatónak használható.
_________________
Üdv: KisLab - Kísérleti Laboratórium

Felhasználó profiljának megtekintése Privát üzenet küldése Felhasználó weblapjának megtekintése
Thomas RC
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2006.09.29. Péntek 1:00
Hozzászólások: 4377
Hozzászólás Elküldve: 2007.12.29. 11:54    Hozzászólás témája:
Hozzászólás az előzmény idézésével

kislab írta:

És utána jön az, amit írtál, egy kicsit másképp

Kód:

$theme = setup_style($cookie_style);
Lehet hülyeséget mondok, de mivel átírtad a setup_style... részt cookie-ra, ezért most nincs meghatározva, hogy mi legyen az alap sablon, ha az usernek nincs cookie-ja (például most először van az oldalon). Vagy ez már megvan határozva egy másik helyen ?

Felhasználó profiljának megtekintése Privát üzenet küldése Felhasználó weblapjának megtekintése
kislab
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2007.03.23. Péntek 16:52
Hozzászólások: 573
Hozzászólás Elküldve: 2007.12.29. 12:10    Hozzászólás témája:
Hozzászólás az előzmény idézésével
igazad van. (bár ezt az egészet hajnali 2-kor műveltem)
Akkor
Ehelyett:

Kód:

$theme = setup_style($cookie_style);

Ez van:

Kód:

if(!isset($cookie_style)
   {
   $theme = setup_style($cookie_style);
   }
else
   {
   $theme = setup_style($board_config['default_style']);
   }

_________________
Üdv: KisLab - Kísérleti Laboratórium

Felhasználó profiljának megtekintése Privát üzenet küldése Felhasználó weblapjának megtekintése
se7enth
Kezdő phpBB-s
Kezdő phpBB-s


Csatlakozott: 2007.12.03. Hétfő 21:18
Hozzászólások: 30
Hozzászólás Elküldve: 2007.12.29. 13:46    Hozzászólás témája:
Hozzászólás az előzmény idézésével
Szia

Először is köszönöm a segítséget, főleg hajnali kettőkor. :!:

Ha jól értelmeztem amit írtál akkor a kódokat a function.php-ben erre kell módosítanom:

Kód:

      if ( $userdata['user_id'] != ANONYMOUS && $userdata['user_style'] > 0 )
      {
         if ( $theme = setup_style($userdata['user_style']) )
         {
            return;
         }

         $style_sql = "SELECT * FROM THEMES_TABLE WHERE theme_id = $_cookie[phpbb_style]";
         $result = mysql_query($style_sql);
         while($x = mysql_fetch_array($result))
            {
            $cookie_style = $x[0];
            }
      }

és

Kód:

   if(isset($cookie_style))
      {
       $theme = setup_style($cookie_style);
      }
   else
    {
     $theme = setup_style($board_config['default_style']);
     }


A profile.php helyett pedig az usercp_registerben találtam meg a cookie készítés helyét....remélem jól:
Egyik ahol módosítja az user tábla tulajdonságait


Kód:

$sql = "UPDATE " . USERS_TABLE . "
            SET " . $username_sql .....


a másik ahol létrehoz egy új sort a táblában, vagyis regisztrál:

Kód:

$sql = "INSERT INTO " . USERS_TABLE . "   (user_id, username,.....


tehát ezek után jön a

Kód:

setcookie("phpbb_style", $user_style, time()+60*60*24*365*2);


Az a gond, hogy nem készíti el a cookiet. Folyton a 'default_style'-t olvassa, s ha kényszerítem, hogy a cookieból olvassa, akkor a köv. hibaüzi:
phpBB : Critical Error

Could not update user theme info

Felhasználó profiljának megtekintése Privát üzenet küldése
kislab
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2007.03.23. Péntek 16:52
Hozzászólások: 573
Hozzászólás Elküldve: 2007.12.29. 15:33    Hozzászólás témája:
Hozzászólás az előzmény idézésével
Igen, várható volt, mivel a kódom nem teljesen normális. Egy kicsit átnézegetem a fájlokat, aztán majd kitalálok valamit :-)

Szerk.:


Na kiötlöttem valamit.

Kód:


##functions.php
##---[FIND]---
##
   //
   // Set up style
   //
   if ( !$board_config['override_user_style'] )
   {
      if ( $userdata['user_id'] != ANONYMOUS && $userdata['user_style'] > 0 )
      {
         if ( $theme = setup_style($userdata['user_style']) )
         {
            return;
         }
      }
   }

   $theme = setup_style($board_config['default_style']);
##
##---[REPLACE WITH]---
##
   //
   // Set up style
   //
   if ( !$board_config['override_user_style'] )
   {
      if ( $userdata['user_id'] != ANONYMOUS && $userdata['user_style'] > 0 )
      {
                             
         if ( $theme = setup_style($userdata['user_style']) )
         {
                        stecookie("phpbb_style", $userdata['user_style'], time()+60*60*24*365);
         return;
         }
      }
        if ($userdata['user_id'] == ANONYMOUS)
           {
           if ($_COOKIE['phpbb_style'] !== null)
              {
              $theme = setup_style($_COOKIE['phpbb_style']);
              }
           else
              {
              $theme = setup_style($board_config['default_style']);
              }
           }
   }
       

Ezt a modot végezd el a functions.php-n. A másik fájl-t meg állítsd vissza, hogy ne legyen benne a setcookie() rész.
_________________
Üdv: KisLab - Kísérleti Laboratórium

Felhasználó profiljának megtekintése Privát üzenet küldése Felhasználó weblapjának megtekintése
se7enth
Kezdő phpBB-s
Kezdő phpBB-s


Csatlakozott: 2007.12.03. Hétfő 21:18
Hozzászólások: 30
Hozzászólás Elküldve: 2007.12.29. 23:46    Hozzászólás témája:
Hozzászólás az előzmény idézésével
iszonyatosan kiiiiiiirrrrááááállllyyyy vagy .
Remekül működik. :D

Köszönöm szépen a segítséget. :D

Felhasználó profiljának megtekintése Privát üzenet küldése
fberci
Adminisztrátor
Adminisztrátor
Avatar

Csatlakozott: 2005.05.28. Szombat 1:00
Hozzászólások: 7388
Hozzászólás Elküldve: 2007.12.29. 23:54    Hozzászólás témája:
Hozzászólás az előzmény idézésével
Két hiba (egy elírás, egy más):

Kód:


##functions.php
##---[FIND]---
##
   //
   // Set up style
   //
   if ( !$board_config['override_user_style'] )
   {
      if ( $userdata['user_id'] != ANONYMOUS && $userdata['user_style'] > 0 )
      {
         if ( $theme = setup_style($userdata['user_style']) )
         {
            return;
         }
      }
   }

   $theme = setup_style($board_config['default_style']);
##
##---[REPLACE WITH]---
##
   //
   // Set up style
   //
   if ( !$board_config['override_user_style'] )
   {
      if ( $userdata['user_id'] != ANONYMOUS && $userdata['user_style'] > 0 )
      {
         if ( $theme = setup_style($userdata['user_style']) )
         {
            setcookie("phpbb_style", $userdata['user_style'], time()+60*60*24*365);
            return;
         }
      }
      if ($userdata['user_id'] == ANONYMOUS)
      {
         if (isset($_COOKIE['phpbb_style']))
         {
            $theme = setup_style($_COOKIE['phpbb_style']);
         }
         else
         {
            $theme = setup_style($board_config['default_style']);
         }
      }
   }

_________________
Üdv.: fberci
Kereső | Szabályzat | phpBB3 telepítés/frissítés/konvertálás | Útmutatók | Olympus - phpBB3 | Kérlek, ne küldj privát üzenetet nem személyes dologgal kapcsolatban!

Felhasználó profiljának megtekintése Privát üzenet küldése Felhasználó weblapjának megtekintése
se7enth
Kezdő phpBB-s
Kezdő phpBB-s


Csatlakozott: 2007.12.03. Hétfő 21:18
Hozzászólások: 30
Hozzászólás Elküldve: 2007.12.30. 02:18    Hozzászólás témája:
Hozzászólás az előzmény idézésével
Köszi a javítást.
Az elírást én is észrevettem, s a '!== null' részt is nézegettem, de így is tökéletesen működik, úgyhogy hagytam.

Köszi +1x a segítséget.

Felhasználó profiljának megtekintése Privát üzenet küldése
Hozzászólások megtekintése:  

Nem készíthetsz új témákat ebben a fórumban.
Nem válaszolhatsz egy témára ebben a fórumban.
Nem módosíthatod a hozzászólásaidat a fórumban.
Nem törölheted a hozzászólásaidat a fórumban.
Nem szavazhatsz ebben fórumban.

Hirdetés
Hirdetés