Performanter Login-Mod

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
KonKorT
Mitglied
Beiträge: 18
Registriert: 04.04.2007 13:40

Performanter Login-Mod

Beitrag von KonKorT »

Hallo,

dann möchte ich hier auch mal meinen ersten Mod vorstellen. Es handelt sich um einen Mod, mit dem geprüft wird, ob man im Forum eingeloggt ist oder nicht. Sofern man eingeloggt ist, wird der Benutzername ausgelesen. Anders als bei den anderen Login-Mods wird aber KEINE einzige phpBB-Datei benötigt - was insbesondere aus Performancesicht kleine Vorteile mit sich bringen sollte.

Code: Alles auswählen

$userid = 0;
  $cookie_session_id_key = 'phpbb3_XYZ; // Muss individuell angepasst werden
  $cookie_session_key = 'phpbb3_XYZ_k'; // Muss individuell angepasst werden

  if(!empty($_COOKIE[$cookie_session_id_key]))
  {
   $result = mysql_query("SELECT session_user_id FROM phpbb_sessions WHERE session_id='".mysql_real_escape_string($_COOKIE[$cookie_session_id_key])."'");
	
   if(mysql_num_rows($result) == 1)
   {
    $userid = mysql_result($result, 0);

    if($userid > 1)
    {
     $login = 1;

     $user = mysql_fetch_assoc(mysql_unbuffered_query("SELECT username FROM phpbb_users WHERE user_id= '$userid'"));
     $nickname = $user["username"];
	
     mysql_query("UPDATE phpbb_sessions SET session_time = ".time()." WHERE session_id = '".mysql_real_escape_string($_COOKIE[$cookie_session_id_key])."'");
    }
   }
   else
   {
    $result = mysql_query("SELECT user_id FROM phpbb_sessions_keys WHERE key_id = '".mysql_real_escape_string(md5($_COOKIE[$cookie_session_key]))."'");

    if(mysql_num_rows($result) == 1)
    {
     $userid = mysql_result($result, 0);
     $login = 1;

     $ip = $_SERVER["REMOTE_ADDR"];
     $browser = $_SERVER["HTTP_USER_AGENT"];

     mysql_query("INSERT INTO phpbb_sessions SET session_id = '".mysql_real_escape_string($_COOKIE[$cookie_session_id_key])."', session_user_id = '$userid', session_last_visit = ".time().", session_start = ".time().", session_time = ".time().", session_ip = '".mysql_real_escape_string($ip)."', session_browser = '".mysql_real_escape_string($browser)."', session_autologin = '1'");
     mysql_query("UPDATE phpbb_sessions_keys SET last_ip = '".mysql_real_escape_string($ip)."', last_login = ".time()." WHERE key_id = '".mysql_real_escape_string(md5($_COOKIE[$cookie_session_key]))."'");
	
     $user = mysql_fetch_assoc(mysql_unbuffered_query("SELECT username FROM phpbb_users WHERE user_id = '$userid'"));
     $nickname = $user["username"];
    }
   }
  }
Diesen Codeschnippsel einfach als include-datei laden. Danach kann bequem über if($login == 1) überprüft werden, ob derjenige angemeldet oder nicht ist.

Bei Fragen stehe ich gerne zur Verfügung.
Bei mir ist der Mod schon mehrere Monate einwandfrei im Einsatz.
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“