Login & übergabe Session ID

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB2 oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
travelzone50g
Mitglied
Beiträge: 21
Registriert: 02.08.2008 09:46
Wohnort: Berlin

Beitragvon travelzone50g » 09.08.2008 23:02

Einfache AW weil ich die vorrangegangene Lösung genutzt habe und diese nun auch einwandfrei funktioniert bzw. mir keine anderere genannt wurde und warum sollte ich das Forum zerflücken wenn es dazu Dokus gibt die zwar leider nicht immer genau funzen wie beschrieben...

Um es kur zu sagen die Lösung mit terminierten Cookie reicht mir vollkommen aus, aber nun ist auch genug ich habe keine Lust über irgendwelche primitivien sachen hier mit einem MOD der es eigentlich besser wissen müßte zu Diskutieren...

Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 15452
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitragvon Dr.Death » 09.08.2008 23:03

Gut, wenn Du möchtest halte ich mich aus diesem Thema raus.

travelzone50g
Mitglied
Beiträge: 21
Registriert: 02.08.2008 09:46
Wohnort: Berlin

Beitragvon travelzone50g » 10.08.2008 05:50

So damit diese Diskussion ein Ende hat und ich nicht als schlechter Mensch hingestellt werde und ich in den Himmel komme.

Bevor mir hier eventuell nichts gutes mehr wiederfährt in sachen Hilfestellung habe ich mir die Arbeit gemacht meine oben gepostete test Datei mal funktionsfähig zu machen ohne meine eigenen Prüf Routinen bzw. Kriterien zu verwenden.

Man könnte nun aus dem Script noch einieges raus nehmen wie z.b. die while schleife wo user acvtive geholt wird und dies mit in die SQL Anweisung einbauen, und z.B. den Sicherheitscheck ob der User auch in der ForenDB existiert da ja die userdaten schon aus der foren db kommen, also muss er dort ja logischerweise existieren.

Macht wat ihr wollt daraus und nutzt es sinnvoll wer auch immer es nutzen möchte.

Code: Alles auswählen

<?php
// Damit nicht die Fehlermeldung Hacking attempt kommt

define('IN_PHPBB', true);

// Erstellt gesendetes Password & Usernamen als String

$md5pwd = $_POST["pwd"];
$username = $_POST["usr"];

// Prüft ob Username zu Password gehört

$query_login = "SELECT username, user_password, user_id, user_active FROM phpbb_users WHERE username = '$username' AND user_password = '".md5($md5pwd)."'";

$result_login = mysql_query ($query_login);

// Schleife um user_active zu prüfen

while($row_login=mysql_fetch_array($result_login)) {

$user_active = $row_login['user_active'];
$user_id = $row_login['user_id'];

}

// Ist Username & User Password gleich & User active 1  ist LogIn Ok und Sessions werden erstellt

if (mysql_num_rows ($result_login) == 1 && $user_active == 1) 
   {
   // Speichert Session in Datenbank phpbb_sessions
   
   $sql_session_in = "INSERT INTO phpbb_sessions (
                                                 session_id,
                                     session_user_id,
                                     session_start,
                                     session_time,
                                     session_ip,
                                     session_page,
                                     session_logged_in,
                                     session_admin)
                    VALUES (
                        '".md5(uniqid(mt_rand(), true))."',
                      '$user_id',
                      '".time()."',
                      '".time()."',
                      '".ip2long(getenv("REMOTE_ADDR"))."',
                      '0',
                      '1',
                      '0'
                      )";
                     
   mysql_query($sql_session_in);
   
   echo "HIER KANN EIN TEXT REIN DAS LOGIN OK ODER NE HEADER LOCATION UF NE ANDERE SEITE NEN LINK ODER WAS WEIS ICH"; 
   
   
   
// Forenlogin Start
// phpBB Scripte einbinden
$phpbb_root_path = '../forum/'; // HIER DEN PFAD ANPASSEN !!!
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
       
// phpBB Session starten
$userdata = session_pagestart($user_ip, PAGE_INDEX);
       
// Ist der User aus dem Forum ausgeloggt?
if ( $userdata['user_id'] == ANONYMOUS || $userdata['session_user_id'] == ANONYMOUS )
{
   // Sicherheitscheck ob der User auch in der ForenDB existiert
   
   $phpbb_sql = "SELECT user_id FROM " . USERS_TABLE . "
               WHERE user_id=$user_id";
   $phpbb_query = $db->sql_query($phpbb_sql);
   $phpbb_result = $db->sql_fetchrow($phpbb_query);
       
   // Wenn ja, dann im Board einloggen
   
   if ( !empty($phpbb_result['user_id']) )
   {
      session_begin($phpbb_result['user_id'], $user_ip, PAGE_INDEX, FALSE, TRUE);
     
     // Am Ende alle verwendeten Variablen löschen
    
      unset($phpbb_root_path, $phpbb_sql, $phpbb_query, $phpbb_result, $userdata);
   }
}
// Forenlogin Ende
   
   
   
   }
   
   
   
  // Sind LogIn Daten falsch oder User nicht aktiviert zeigt er dieses Meldung an   
   
   else
      {
      echo "HIER FEHLERMELDUNG EINTRAGEN WENN LOGIN NICHT OK IST";
       }

?>


Dazu dann noch das passende Login & fertig is :

Code: Alles auswählen

<form action="./verify.php" method="post">
<input name="usr" id="usr" onfocus="if(this.value == 'Username') this.value='';" onblur="if (this.value=='') this.value='Username';" value="Username">
<br>
<input name="pwd" type="password" id="pwd" onfocus="if(this.value == 'Passwort') this.value='';" onblur="if (this.value=='') this.value='Passwort';" value="Passwort">
<br>
<input type="submit" name="login" value="Login" />
</form>


So ich hoffe nun beruhigen sich hier mal wieder die Gemüter. Bei Fragen fragen und Euch wird geholfen.

LG Maria

Benutzeravatar
S2B
Ehemaliger
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitragvon S2B » 10.08.2008 11:02

Nur damit das hier nicht so stehen bleibt:

Code: Alles auswählen

$query_login = "SELECT username, user_password, user_id, user_active FROM phpbb_users WHERE username = '" . mysql_real_escape_string($username) . "' AND user_password = '".md5($md5pwd)."'";
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.

travelzone50g
Mitglied
Beiträge: 21
Registriert: 02.08.2008 09:46
Wohnort: Berlin

Beitragvon travelzone50g » 10.08.2008 11:28

Jut sollte man gegen SQL-Injection unbedingt mit einbauen bzw. verwenden...

so nun kürzen wir das Script auch noch um unnötige Zeilen hoffe es funzt nun so auch noch habs net getestet aber eigentlich sollte es gehen :

Code: Alles auswählen

<?php
// Damit nicht die Fehlermeldung Hacking attempt kommt

define('IN_PHPBB', true);

// Erstellt gesendetes Password & Usernamen als String

$md5pwd = $_POST["pwd"];
$username = $_POST["usr"];

// Prüft ob Username zu Password gehört und user_active 1 ist

$query_login = "SELECT username, user_password, user_id, user_active FROM phpbb_users WHERE username = '" . mysql_real_escape_string($username) . "' AND user_password = '".md5($md5pwd)."' AND user_active = '1'";

$result_login = mysql_query ($query_login);

// Schleife um user_id zu bekommen

while($row_login=mysql_fetch_array($result_login)) {
$user_id = $row_login['user_id'];

}

// Ist Username & User Password gleich ist LogIn Ok und Sessions werden erstellt

if (mysql_num_rows ($result_login) == 1) 
   {
   // Speichert Session in Datenbank phpbb_sessions
   
   $sql_session_in = "INSERT INTO phpbb_sessions (
                                                 session_id,
                                     session_user_id,
                                     session_start,
                                     session_time,
                                     session_ip,
                                     session_page,
                                     session_logged_in,
                                     session_admin)
                    VALUES (
                        '".md5(uniqid(mt_rand(), true))."',
                      '$user_id',
                      '".time()."',
                      '".time()."',
                      '".ip2long(getenv("REMOTE_ADDR"))."',
                      '0',
                      '1',
                      '0'
                      )";
                     
   mysql_query($sql_session_in);
   
   echo "HIER KANN EIN TEXT REIN DAS LOGIN OK ODER NE HEADER LOCATION UF NE ANDERE SEITE NEN LINK ODER WAS WEIS ICH"; 
   
   
   
// Forenlogin Start
// phpBB Scripte einbinden
$phpbb_root_path = '../forum/'; // HIER DEN PFAD ANPASSEN !!!
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
       
// phpBB Session starten
$userdata = session_pagestart($user_ip, PAGE_INDEX);
       
// Ist der User aus dem Forum ausgeloggt?
if ( $userdata['user_id'] == ANONYMOUS || $userdata['session_user_id'] == ANONYMOUS )
{
      session_begin($user_id, $user_ip, PAGE_INDEX, FALSE, TRUE);
     
     // Am Ende alle verwendeten Variablen löschen
    
      unset($phpbb_root_path, $userdata); 
}
// Forenlogin Ende
   
   
   
   }
   
   
   
  // Sind LogIn Daten falsch oder User nicht aktiviert zeigt er dieses Meldung an   
   
   else
      {
     echo "HIER FEHLERMELDUNG EINTRAGEN WENN LOGIN NICHT OK IST";
     }

?>



LG Maria

gmmusik
Mitglied
Beiträge: 1
Registriert: 11.08.2008 23:20

Beitragvon gmmusik » 19.09.2008 08:39

Ich habe heute versucht die "login" Funktion aus auth.php zu verwenden.. Leider kenne ich mich mit dem phpBB nicht gut bis gar nicht aus.

Welche Dateien muss ich einbinden, sodass die Funktion alle benoetigten Daten hat?

Danke und Gruss!

Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 15452
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitragvon Dr.Death » 19.09.2008 10:44

Ein externes Loginscript, welche die auth API nutzt findest u.a. hier :
http://www.lpi-clan.de/viewtopic.php?f=26&t=3550

Aber das ist nur für phpBB3


Zurück zu „phpBB 2.0: Mod-Bastelstube“