Topic Password és a 3.0.9 - kizárt topikok

Szerző
Üzenet
Mykee
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2005.08.29. Hétfő 1:00
Hozzászólások: 806
Hozzászólás Elküldve: 2011.09.06. 08:04    Hozzászólás témája: Topic Password és a 3.0.9 - kizárt topikok
Hozzászólás az előzmény idézésével
Sziasztok!

Nagy segítségre lenne most szükségem!!!

Frissítettem a 3.0.0-ás oldalam 3.0.9-re és az egyik alapköve a jelszavas topikok voltak. Sajnos a MOD fejlesztését befejezték, és bár most van egy srác, aki át akarja írni, tovább akarja fejleszteni, de semmilyen verziót nem adott még közzé ebből.

Viszont a gond az, hogy frissítés után nem enged be a jelszavas topikokba a fórum!!! Beírom a jelszót és visszairányít az indexre. :shock: A mod lépéseit megcsináltam, a jelszó is ott az adatbázisban és mégis ez történik!

Kérem, valaki segítsen, mert addig az egész weblapom áll, a korábban jelszavazott topikokat meg értelemszerűen nem nyithatom ki.

Itt a letöltési fájl és pár dolog, amiről anno értekeztünk e témában:
http://phpbb.hu/forum/tema/4350

Illetve az új fejlesztésről itt van a hír:
http://www.phpbb.com/community/viewtopic.php?f=70&t=2102003


Update1:
Van egy nagy sejtésem, hogy vagy a session vagy a user kezelésben van valami gubanc az alábbi kódban, mert ez még 3.0-ás verzióra készült. Ez megy a functions.php-be, ami beengedi a usert:

Kód:

/**
* Generate topic login box
*/
function login_topic_box($topic_data)
{
   global $db, $config, $user, $template, $phpEx;

   $password = request_var('password', '', true);

   $sql = 'SELECT topic_id
      FROM ' . TOPICS_ACCESS_TABLE . '
      WHERE topic_id = ' . $topic_data['topic_id'] . '
         AND user_id = ' . $user->data['user_id'] . "
         AND session_id = '" . $db->sql_escape($user->session_id) . "'";
   $result = $db->sql_query($sql);
   $row = $db->sql_fetchrow($result);
   $db->sql_freeresult($result);

   if ($row)
   {
      return true;
   }

   if ($password)
   {
      // Remove expired authorised sessions
      $sql = 'SELECT session_id
         FROM ' . SESSIONS_TABLE;
      $result = $db->sql_query($sql);

      if ($row = $db->sql_fetchrow($result))
      {
         $sql_in = array();
         do
         {
            $sql_in[] = (string) $row['session_id'];
         }
         while ($row = $db->sql_fetchrow($result));

         // Remove expired sessions
         $sql = 'DELETE FROM ' . TOPICS_ACCESS_TABLE . '
            WHERE ' . $db->sql_in_set('session_id', $sql_in, true);
         $db->sql_query($sql);
      }
      $db->sql_freeresult($result);

      if ($password == $topic_data['topic_password'])
      {
         $sql_ary = array(
            'topic_id'      => (int) $topic_data['topic_id'],
            'user_id'      => (int) $user->data['user_id'],
            'session_id'   => (string) $user->session_id,
         );

         $db->sql_query('INSERT INTO ' . TOPICS_ACCESS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));

         return true;
      }

      $template->assign_var('LOGIN_ERROR', $user->lang['WRONG_PASSWORD']);
   }

   page_header($user->lang['LOGIN']);

   $template->assign_vars(array(
      'S_HIDDEN_FIELDS'      => build_hidden_fields(array('t' => $topic_data['topic_id'])))
   );

   $template->set_filenames(array(
      'body' => 'login_topic.html')
   );
   
   page_footer();
}



Update2: amit kiderítettem, hogy
- a mod a fórum jelszavazásán alapszik, szinte mindent átvett a srác ugyanúgy
- valami miatt a Belépés gomb nem az eredeti linket generálja le, hanem egy ucp.php-s login linket hoz létre. A Functions.php-ben a kódot módosítottam aszerint, hogy ahogyan a fórumos belépőkódnál van felette, természetesen átalakítva a megfelelő módon topikokra. Viszont ez sem segített.

Az a kérdésem, hogy a jelszavas fórum belépéshez hol generálja a gomb alá a jelszót? Mert ott a megoldásom kulcsa. :roll:

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

Csatlakozott: 2005.08.29. Hétfő 1:00
Hozzászólások: 806
Hozzászólás Elküldve: 2011.09.06. 18:56    Hozzászólás témája:
Hozzászólás az előzmény idézésével
No akkor egy megoldás (aztán mondjátok el, mennyire necces, mert kútfőből nyomoztam ki).

A modban van egy login_topic.html nevű fájl, amit fel kel másolni a sablonok közé. Ez szinte mindenben hasonlít a login_forum.html fájlra, csak topik azonosítókkal. Nos itt az eredeti állomány:

Kód:

<!-- INCLUDE overall_header.html -->

<div id="pagecontent">

   <form name="login_forum" method="post" action="{S_LOGIN_ACTION}">
   
   <table class="tablebg" width="100%" cellspacing="1" align="center">
   <tr>
      <th>{L_LOGIN}</th>
   </tr>
   <tr>
      <td class="row3" align="center"><span class="gensmall">{L_LOGIN_TOPIC}</span></td>
   </tr>
   <tr>
      <td class="row1" align="center">
      
         <table cellspacing="1" cellpadding="4" border="0">
         <!-- IF LOGIN_ERROR -->
            <tr>
               <td class="gensmall" colspan="2" align="center"><span class="error">{LOGIN_ERROR}</span></td>
            </tr>
         <!-- ENDIF -->
         <tr>
            <td class="gensmall"><b>{L_PASSWORD}:</b></td>
            <td><input class="post" type="password" name="password" size="25" tabindex="2" /></td>
         </tr>
         </table>
      </td>
   </tr>
   <tr>
      <td class="cat" colspan="2" align="center">{S_HIDDEN_FIELDS}<input type="submit" name="login" class="btnmain" value="{L_LOGIN}" tabindex="3" /></td>
   </tr>
   </table>
   
   </form>

</div>

<br clear="all" />

<!-- INCLUDE breadcrumbs.html -->

<br clear="all" />

<div align="{S_CONTENT_FLOW_END}"><!-- INCLUDE jumpbox.html --></div>

<!-- INCLUDE overall_footer.html -->


Én átírtam és kiegészítettem ezt a kódot. Először is ezt a kódot kicseréltem erre, töröltem az actiont. Ezt:

Kód:

<form name="login_forum" method="post" action="{S_LOGIN_ACTION}">


erre:

Kód:

<form name="login_forum" method="post" action="">


Majd a végére betettem a login_forum.html-ből két sort.
Eredeti kód:

Kód:

   </table>
   
   </form>


Módosított kód:

Kód:

   </table>
   {S_FORM_TOKEN}
   {S_LOGIN_REDIRECT}   
   </form>


Így működik és nem irányít át. Kérem a véleményeteket, hogy ez így jó-e?

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

Csatlakozott: 2007.03.26. Hétfő 5:42
Hozzászólások: 2237
Hozzászólás Elküldve: 2011.09.06. 19:43    Hozzászólás témája:
Hozzászólás az előzmény idézésével
Az action értékét nem értem miért szedted ki.

A 2 módosítás meg egyszerűen szükséges :wink:
_________________
phpBB my addons: phpBB Arcade, [MODDB] phpBB Delete my registration, [RC] phpBB Invite
phpBB my Extensions: [RC] phpBB Arcade, [CDB] phpBB Delete my registration

Játék-világ - KillBill

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

Csatlakozott: 2005.08.29. Hétfő 1:00
Hozzászólások: 806
Hozzászólás Elküldve: 2011.09.06. 20:58    Hozzászólás témája:
Hozzászólás az előzmény idézésével
Azért kellett kiszednem, mert állandóan az ucp=login oldalra akart irányítani a viewtopic helyett. Nem értem, hogy amíg ez megy a fórumjelszavas belépésnél, itt egyszerűen nem ment. Valahol tuti még el van dugva egy beállítás a fórum jelszónál, ami mellé be kellene írni a topikos megfelelőjét, de ennyire nem ismerem a kódot. Ez viszont ahogy kivettem egyből jó oldalra vitt. Tudom, fapados, de most sürgősen kellett a megoldás, mert itt álltam egy csupasz fórumnál és a userek meg jönnének be, de nem tudtak.

Off: viszont holnap a meghívós mod frissítése jön 1.1.1 RC-ről és az előző esetben lyukra futottam, nem ment le az 1.1.2-es adatbázis frissítés sem, úgyhogy szurkolj, hogy holnap lefusson. :D

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

Csatlakozott: 2007.03.26. Hétfő 5:42
Hozzászólások: 2237
Hozzászólás Elküldve: 2011.09.06. 21:18    Hozzászólás témája:
Hozzászólás az előzmény idézésével
Tedd vissza és ezt pótold a function login_topic_box -ba

keresd

Kód:

'S_HIDDEN_FIELDS'      => build_hidden_fields(array('t' => $topic_data['topic_id'])))


és tedd elé

Kód:

'S_LOGIN_ACTION'      => build_url(array('f', 't')),


nem vizsgáltam meg, de remélem jó lesz.
_________________
phpBB my addons: phpBB Arcade, [MODDB] phpBB Delete my registration, [RC] phpBB Invite
phpBB my Extensions: [RC] phpBB Arcade, [CDB] phpBB Delete my registration

Játék-világ - KillBill

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

Csatlakozott: 2005.08.29. Hétfő 1:00
Hozzászólások: 806
Hozzászólás Elküldve: 2011.09.06. 21:36    Hozzászólás témája:
Hozzászólás az előzmény idézésével
Ott a pont! :D Nagyon köszönöm!
Látod, ez nem szúrta ki a szemem, az a sor, ami az előző részben (a fórumosnál) benne van, és itt nem volt. Hálás köszönetem és akkor ezt megosztom a többieknek is, hogy mit írtál. Köszönöm!

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