Cache Birthday MOD

Kleine Codeänderungen oder Mini-MODs
Keine Anfragen!!! -- No requests!!!

Moderator: Supporter

Beitragvon AmigaLink » 15. Jan 2007 12:09

Ja die SID wird mit gecached und Nein ich konnte bisher keine Fehler feststellen.
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon bgx » 15. Jan 2007 17:39

Hmm das finde ich aber grob fahrlässig, wenn andere Benutzer die Sid eines Fremden angezeigt bekommen.

Habe gerade mal einen Testuser auf meinem Board angelegt.Daten in meinem Profil!

Und schau dir dann mal die Links zu den Profilen an! Dort hängt überall die Sid von dem Benutzer, der den Cache zuletzt aktualisiert hat. :shock:
Benutzeravatar
bgx
 
Beiträge: 7
Registriert: 14. Jan 2007 21:35

Beitragvon AmigaLink » 15. Jan 2007 19:24

Na ja, solange es sich dabei nicht um eine noch aktuelle SID eines Admins handelt, ist es nicht soooooo tragisch. ;)
Aber du hast natürlich recht!!!

Da kann man mal sehen wie man sich weiter Entwickelt.
Dieser Cache Basiert ja, wie erwähnt, auf einem Cache den der Autor des Birthday MODs entwickelt hat. easygo und ich haben diesen Cache "nur" Optimiert.
Heute wäre mir ebenfalls aufgefallen das die SID mit gecachet wird und das diese Tatsache alles andere als Vorteilhaft ist. Damals fehlte mir aber diesbezüglich noch die Erfahrung und ich war einfach nur froh das wir gewisse Hürden meistern konnten. :D

Ich danke dir für den Hinweis und hab das Snippet direkt mal angepasst. :)
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon bgx » 16. Jan 2007 10:33

Ich danke dir Amigalink!

Tja, mir ist es auch schon vor einem halben Jahr, aufgefallen, fehlte mir damals aber auch die Erfahrung wie dir. :lol:

Ich hatte schon drüber geschaut, nur fehlt mir leider im Moment die Zeit, da ich noch an anderen Dingen im Forum am nachbessern bin. Dachte nur schreib es mal hier hin; eskann ja nicht sein das so ein "Mangel" nur mir aufgefallen ist. ;)

OT: Die Geschichte mit eurem Cache verfolge ich nun schon seit längerem und bin gespannt was sich daraus entwickelt.

Grüße aus dem Saarland!

EDIT:
Hmm ich hab mir den Code jetzt mal angeschaut.
Das ist die einfachste Lösung, wo es aber immernoch ein Problem gibt.

Wenn ich Cookies deaktiviert habe werde ich beim Click auf einen Profillink ausgeloggt weil jetzt gar keine Sid mehr angehängt wird.
Ich werde es wohl so lösen: Wenn über die URL keine Sid übergeben wird nimmt er das Cachefile, andernfalls führt er eine normale Abfrage der SQL-Queries durch. (Ist zwar nicht optimal, denke es kommt aber nicht all zu oft vor, das jemand ohne Cookies surft).

Hänge die Lösung hier an, sobald ich fertig bin. ;)

Zugefügt nach 1 Stunde(n) 29 Minute(n):

So sollte es gehen:

Ist nun der ganze Code mit colorgroups und unterscheidung ob ausgeloggt(kein link) oder eingeloggt(link mit ggf. sid)



Code: Alles auswählen
// Birthday Mod, Show users with birthday
// -- add mod : B-day Caching to show users with birthday on Index / Portal -------------------
$cache_bday_file = $phpbb_root_path . "cache/bday/bday_" . $board_config['board_timezone'] . ".php";
$time_now = time(); // if already present you should remove this line

if ( @file_exists($cache_bday_file) )
{
   $last_update_time = @filemtime($cache_bday_file);
   $newest_regdate = $newest_userdata['user_regdate'];
   if (!isset($newest_userdata['user_regdate']) || $newest_regdate == 0)
   {
      $sql = "SELECT user_regdate FROM " . USERS_TABLE . "
         WHERE user_id <> " . ANONYMOUS . " AND user_active = 1
      ORDER BY user_id DESC LIMIT 0,1";
      if (!$result = $db->sql_query($sql))
      {
         message_die(GENERAL_ERROR, 'Could not obtain regdate information', '', __LINE__, __FILE__, $sql);
      }
      while ($row = $db->sql_fetchrow($result))
      {
         $newest_regdate = $row['user_regdate'];
      }
      $db->sql_freeresult($result);
   }
   $valid = ( ((date('Yz',$time_now) - date('Yz',$last_update_time)) == 0) && (($time_now - $newest_regdate) > ($time_now - $last_update_time)) ) ? true : false;
} else {
   $valid = false;
}

$session_id = ( isset($HTTP_GET_VARS['sid']) ) ? $HTTP_GET_VARS['sid'] : '';

if ($valid && $session_id=='')
{
   include ($cache_bday_file);
   $birthday_today_list = stripslashes($birthday_today_list);
   $birthday_week_list = stripslashes($birthday_week_list);
} else {
   $sql = ($board_config['birthday_check_day']) ? "SELECT user_id, username, user_birthday, user_level FROM " . USERS_TABLE. " WHERE user_birthday <> 999999 AND user_active=1 ORDER BY username" : "";
   if($result = $db->sql_query($sql))
   {
      if (!empty($result))
      {
         $this_year = create_date('Y', $time_now, $board_config['board_timezone']);
         $date_today = create_date('Ymd', $time_now, $board_config['board_timezone']);
         $date_forward = create_date('Ymd', $time_now+($board_config['birthday_check_day']*86400), $board_config['board_timezone']);
         while ($birthdayrow = $db->sql_fetchrow($result))
         {
               $user_birthday2 = $this_year.($user_birthday = realdate("md",$birthdayrow['user_birthday'] ));
               if ( $user_birthday2 < $date_today ) $user_birthday2 += 10000;
            if ( $user_birthday2 > $date_today  && $user_birthday2 <= $date_forward )
            {
            // user are having birthday within the next days
            $user_age = ( $this_year.$user_birthday < $date_today ) ? $this_year - realdate ('Y',$birthdayrow['user_birthday'])+1 : $this_year- realdate ('Y',$birthdayrow['user_birthday']);
//            $birthdayrow['username'] = color_group_colorize_name($birthdayrow['user_id']);

if ( $userdata['session_logged_in'] )
{
        $birthdayrow['username'] = color_group_colorize_name($birthdayrow['user_id']);
            $birthday_week_list .= ' ' . $birthdayrow['username'] . ' ('.$user_age.'),';
}
else
{
        $birthdayrow['username'] = color_group_colorize_name($birthdayrow['user_id'],TRUE);
            $birthday_week_list .= ' ' . $birthdayrow['username'] . ' ('.$user_age.'),';
}
         } else if ( $user_birthday2 == $date_today )
            {
            //user have birthday today
            $user_age = $this_year - realdate ( 'Y',$birthdayrow['user_birthday'] );

if ( $userdata['session_logged_in'] )
{
            $birthdayrow['username'] = color_group_colorize_name($birthdayrow['user_id']);
            $birthday_today_list .= ' ' . $birthdayrow['username'] . ' ('.$user_age.'),';
}
else
{
            $birthdayrow['username'] = color_group_colorize_name($birthdayrow['user_id'],TRUE);
            $birthday_today_list .= ' ' . $birthdayrow['username'] . ' ('.$user_age.'),';
}}
         }
         if ($birthday_today_list) $birthday_today_list[ strlen( $birthday_today_list)-1] = ' ';
         if ($birthday_week_list) $birthday_week_list[ strlen( $birthday_week_list)-1] = ' ';
      }
      $db->sql_freeresult($result);

      if ($session_id=='')
      {
      if ($fp = fopen($cache_bday_file, "w"))
      {
         // stores the data set in a cache file
         $bday = "<?php\n";
         $bday .='$birthday_today_list = \'' . addslashes($birthday_today_list) . "';\n";
         $bday .='$birthday_week_list = \'' . addslashes($birthday_week_list) . "';\n?>";
         fwrite($fp, $bday);
         fclose($fp);
         @chmod($cache_bday_file, 0777);
      }
      }
   }
}
// -- fin : B-day Caching ---------------------------------------------------------------------


;)

OT: Wo finde ich den den zugefügt Hack wie er hier drin ist! Ist klasse das Ding, würd ich auch gern nutzen.
Benutzeravatar
bgx
 
Beiträge: 7
Registriert: 14. Jan 2007 21:35

Beitragvon AmigaLink » 16. Jan 2007 14:24

Das ist zwar eine Lösung. Gefällt mir aber überhaupt nicht, weil dann z.B. Suchmaschinen und Gäste das Board übelst belasten (ich hab die SID (wie sehr viele andere Admins auch) für Gäste deaktiviert). :? Das ist nicht Sinn und zweck der Übrung. :roll:

Ich habe im Impressum/Disclaimer einen Hinweis daß das Board Cookies benutzt und teilweise auch benötigt. Wer also ohne Cookies Surft ist selber schuld. ;)

Vielleicht setze ich mich irgendwann mal hin und schreibe den Cache komplett um.

<!-- BEGIN Off_Topic -->
Wo finde ich den den zugefügt Hack wie er hier drin ist!
Sorry, aber diese Frage geht mir allmählich Tierisch auf den S...!

Genau so wie er hier läuft findest du den MOD nirgendwo. Das Original befindet sich jedoch in den Downloads und ein Blick in die MODs/Hacks-Liste kann auch nicht schaden. Denn da sind alle MODs gelistet, die hier Installiert sind. :roll:
<!-- END Off_Topic -->
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Beitragvon bgx » 16. Jan 2007 15:04

OT: Sorry :oops: wollte gerade editieren, hab den Mod grad selber gefunden und grad eingebaut!

Hmm also bei mir haben Gäste keine SID, was zur folge hat das nach wie vor das gecachte file genommen wird. Also verstehe ich nicht, wie das mehr belasten sollte?
Benutzeravatar
bgx
 
Beiträge: 7
Registriert: 14. Jan 2007 21:35

Beitragvon AmigaLink » 16. Jan 2007 15:25

Hmm also bei mir haben Gäste keine SID, was zur folge hat das nach wie vor das gecachte file genommen wird. Also verstehe ich nicht, wie das mehr belasten sollte?
Hast recht. Denkfehler meinerseits. :oops:
Die SID wird ja nur an gehangen wenn Cookies deaktiviert sind und deine Änderung umgeht den Cache nur wenn sie vorhanden ist.
Probleme (mit Suchmaschinen) bekommen also nur die Boards, die Gästen eine SID erteilen. Und das dürften eigentlich die wenigsten sein. :mrgreen:

Gute Idee von dir! :D
Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
Benutzeravatar
AmigaLink
Administrator
 
Beiträge: 3987
Registriert: 11. Aug 2004 01:06
Wohnort: NRW

Vorherige

Zurück zu phpBB2 Snippets



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste

cron