Kundenverwaltung und Forum zusammenfügen

Hier können Sie Fragen bezüglich der Kundenverwaltung stellen.
voglm1

Kundenverwaltung und Forum zusammenfügen

Beitragvon voglm1 » Di 26. Aug 2003, 14:41

Hallo !

Mit der Forumsumstellung ist anscheinend ein interessanter Thread flöten gegangen.

Es ging mal ein Script rum, mit dem man die Kundenverwaltung und das phpbb2-Forum zusammenführen konnte.

Hat das mal jemand geschafft, bzw. hat es einer versucht ??

Es soll ja sei der 2.1.X eine Schnittstelle mit eingearbeitet sein, um solche sachen zu realisieren.

Wäre schön, wenn hierzu nochmal ein Lösungsansatz kommen würde.

mfg

voglm1

chw
Senior Member
Beiträge: 164
Registriert: Do 1. Jan 1970, 02:00
Kontaktdaten:

Beitragvon chw » Mi 27. Aug 2003, 08:28

Hallo,

bei der Forenumstellung sind leider mehrere interessante Beiträge abhanden gekommen!
Zum Glück haben wir die Anpassung noch davor (auch mit der Hilfe eine WE Mitarbeiters) durchführen können. Auf http://www.fotofenster.de kannst du dir das mal angucken.

Auf jeden Fall ist es wichtig, alle Logininformationen aus den Templates des Forums zu entfernen.
Folgende Datei musst du auf den Server laden:
Name: WE_CUSTOMER_EXTERNAL_FN.php

<?php
function we_customer_saveFN($array){
$db = new DB_WE();
$username = $array["Username"];
$password = md5($array["Password"]);
$email = $array["Kontakt_EMail"];

$user_id = f("SELECT user_id FROM phpbb_users WHERE username='$username'","user_id",$db);
if($user_id << $user_id != -1){
$db->query("UPDATE phpbb_users SET user_password='$password',user_email='$email' WHERE user_id='$user_id'");
}else{
$user_id = 1+abs(f("SELECT MAX(user_id) as max FROM phpbb_users","max",$db));
$regdate = time();
$db->query("INSERT INTO phpbb_users (user_id, user_active, username, user_password, user_regdate, user_style, user_lang, user_dateformat, user_viewemail, user_attachsig, user_allowhtml, user_allowbbcode, user_allowsmile, user_allowavatar, user_allow_pm, user_allow_viewonline, user_notify, user_notify_pm, user_popup_pm, user_rank, user_email) VALUES ('$user_id',1,'$username','$password',$regdate,1,'german','d.m.Y h:i', 0,1,0,1,1,1,1,1,1,1,1,0,'$email')");
}
}

function we_customer_deleteFN($username){
$db = new DB_WE();
$db->query("DELETE FROM phpbb_users WHERE username='$username'");
}


?>

Der Link zum Forum muss so erstellt werden, dass verschiedene Daten darüber übergeben werden können. Um bei nicht registrierten User diese Weiterleitung zu vermeiden, haben wir zwei verschieden Buttons erstellt. Registrierte und unregistrierte Usersehen zwar den gleichen, im Hintergrund aber sind sie verschieden:

<we:ifNotRegisteredUser permission="Username">
<tr><td>[img]/_layout/dot_blank.gif[/img]</td></tr>
<tr class="background_menu_items"><td><a href="http://www.fotofenster.de/forum/phpBB2/" target="_blank">[img]/_layout/menu_item_forum.gif[/img]</td></tr>
</we:ifNotRegisteredUser permission="Username">

<we:ifRegisteredUser permission="Username">
<tr><td>[img]/_layout/dot_blank.gif[/img]</td></tr>
<form style="margin:0; cursor:hand;" action="http://www.fotofenster.de/forum/phpBB2/login.php" name="forumform" method="post" target="forumwind"><input type="hidden" name="username" value="<we:sessionField name="Username" type="print"/>"><input type="hidden" name="password" value="<we:sessionField name="Password" type="print"/>"><input type="hidden" name="login" value="1"><tr class="background_menu_items"><td><input type="image" src="/_layout/menu_item_forum.gif" alt="Forum"></td></tr></form>
</we:ifRegisteredUser>

Die Datenbank des Forums wird jetzt nur bei neuen aktivitäten in der Kundenverwaltung angepasst, ältere Kunden musst du manuell eintragen.

Gruß
Christian

mawa

Beitragvon mawa » Mi 3. Sep 2003, 16:34

Was macht die Datei (WE_CUSTOMER_EXTERNAL_FN.php) genau und wo genau muss ich diese hochladen (Verzeichniss?)

chw
Senior Member
Beiträge: 164
Registriert: Do 1. Jan 1970, 02:00
Kontaktdaten:

Beitragvon chw » Fr 5. Sep 2003, 17:58

Hallo,

die Datei WE_CUSTOMER_EXTERNAL_FN.php gleicht die Tabellen in der Datenbank ab. Sie muss in das root-Verzeichnis auf den Server.

Gruß
Christian

voglm1

Beitragvon voglm1 » Mi 3. Dez 2003, 10:40

chw hat geschrieben:Hallo,

bei der Forenumstellung sind leider mehrere interessante Beiträge abhanden gekommen!
Zum Glück haben wir die Anpassung noch davor (auch mit der Hilfe eine WE Mitarbeiters) durchführen können. Auf http://www.fotofenster.de kannst du dir das mal angucken.

Auf jeden Fall ist es wichtig, alle Logininformationen aus den Templates des Forums zu entfernen.
Folgende Datei musst du auf den Server laden:
Name: WE_CUSTOMER_EXTERNAL_FN.php

<?php
function we_customer_saveFN($array){
$db = new DB_WE();
$username = $array["Username"];
$password = md5($array["Password"]);
$email = $array["Kontakt_EMail"];

$user_id = f("SELECT user_id FROM phpbb_users WHERE username='$username'","user_id",$db);
if($user_id << $user_id != -1){
$db->query("UPDATE phpbb_users SET user_password='$password',user_email='$email' WHERE user_id='$user_id'");
}else{
$user_id = 1+abs(f("SELECT MAX(user_id) as max FROM phpbb_users","max",$db));
$regdate = time();
$db->query("INSERT INTO phpbb_users (user_id, user_active, username, user_password, user_regdate, user_style, user_lang, user_dateformat, user_viewemail, user_attachsig, user_allowhtml, user_allowbbcode, user_allowsmile, user_allowavatar, user_allow_pm, user_allow_viewonline, user_notify, user_notify_pm, user_popup_pm, user_rank, user_email) VALUES ('$user_id',1,'$username','$password',$regdate,1,'german','d.m.Y h:i', 0,1,0,1,1,1,1,1,1,1,1,0,'$email')");
}
}

function we_customer_deleteFN($username){
$db = new DB_WE();
$db->query("DELETE FROM phpbb_users WHERE username='$username'");
}


?>

Der Link zum Forum muss so erstellt werden, dass verschiedene Daten darüber übergeben werden können. Um bei nicht registrierten User diese Weiterleitung zu vermeiden, haben wir zwei verschieden Buttons erstellt. Registrierte und unregistrierte Usersehen zwar den gleichen, im Hintergrund aber sind sie verschieden:

<we:ifNotRegisteredUser permission="Username">
<tr><td>[img]/_layout/dot_blank.gif[/img]</td></tr>
<tr class="background_menu_items"><td><a href="http://www.fotofenster.de/forum/phpBB2/" target="_blank">[img]/_layout/menu_item_forum.gif[/img]</td></tr>
</we:ifNotRegisteredUser permission="Username">

<we:ifRegisteredUser permission="Username">
<tr><td>[img]/_layout/dot_blank.gif[/img]</td></tr>
<form style="margin:0; cursor:hand;" action="http://www.fotofenster.de/forum/phpBB2/login.php" name="forumform" method="post" target="forumwind"><input type="hidden" name="username" value="<we:sessionField name="Username" type="print"/>"><input type="hidden" name="password" value="<we:sessionField name="Password" type="print"/>"><input type="hidden" name="login" value="1"><tr class="background_menu_items"><td><input type="image" src="/_layout/menu_item_forum.gif" alt="Forum"></td></tr></form>
</we:ifRegisteredUser>

Die Datenbank des Forums wird jetzt nur bei neuen aktivitäten in der Kundenverwaltung angepasst, ältere Kunden musst du manuell eintragen.

Gruß
Christian
Heisst das also, dass man seinen altbestand nicht in das Board importieren kann, ausser es manuell einzutragen?

afrik

Beitragvon afrik » Mi 21. Jul 2004, 09:19

Hallo,

hat zufällig jemand das obige Script schon mal erfolgreich eingesetzt?
Ich müsste nämlich auch das PHPBB-Forum mit der Kundenverwaltung zusammenführen. So ganz klar ist mir das aber nicht...

Es sollte so sein, dass ein Kunde, der bereits über die Kundenverwaltung eingeloggt ist, sich im Forum nicht mehr neu registrieren, aber auch nicht mehr neu einloggen muss, um Beiträge zu schreiben. Dass er also automatisch drin ist...

Ich habe die Sachen in zwei getrennten Datenbanken:
eine DB für WebEdition,
die andere für die Forum-Tabellen.

Gruß
afrik

Benutzeravatar
Silke
webEdition Partner
webEdition Partner
Beiträge: 271
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Köln

Beitragvon Silke » Di 4. Okt 2005, 13:01

Hallo,

ich bräuchte die gleiche Lösung wie "afrik"? Hat jemand dies schon mal umgesetzt und kann mir eventuell weiterhelfen?

Gruß,
Silke

fresh
Junior Member
Beiträge: 21
Registriert: Mo 31. Jan 2005, 12:02

Anbindung phpBB an webEdition Kundenverwaltung

Beitragvon fresh » Di 24. Jun 2008, 10:56

Hallo zusammen, ich suche dringend eine brauchbare Lösung mit der ich die WE-Kundenverwaltung mit der Benutzerdatenbank von phpBB3 abgleichen kann. Hat dies schon jemand erfolgreich gemacht und umgesetzt? Leider funktionieren die genannten Beispiele nicht wirklich und der WE-Support ist leider offenbar auch nicht gewollt, uns in dieser Angelegenheit zu unterstützen!
Konkret geht es darum
- die Datenbank abzugleichen
- und mittels Link (wenn der Kunde sich registriert hat) die entsprechenden Logininformationen per URL an phpBB3 zu übergeben, sodass sich der Benutzer nicht ein zweites Mal anmelden muss

Besten Dank!!!

bolleone
Senior Member
Beiträge: 601
Registriert: So 4. Jul 2004, 00:24
Wohnort: Düsseldorf
Kontaktdaten:

Re: Kundenverwaltung und Forum zusammenfügen

Beitragvon bolleone » Do 4. Jun 2009, 18:10

Hallo WebEdition'er,

ich pushe diesen Thread mal ein wenig: ich brauche auch eine Lösung, damit der Kunde sich nur einmal registrieren muß. Wir wollen phpbb als Board-Software innerhalb eines Webangebotes nutzen...
multimediadesign.net · Atelier für Kommunikation
Grimmstr. 3 · 40235 Düsseldorf
Telefon ++49-211-4981791 · Telefax ++49-211-4981792
http://www.multimediadesign.net · bolle@multimediadesign.net

MarS
Senior Member
Beiträge: 602
Registriert: Mo 2. Mai 2005, 11:30
Wohnort: Kiel
Kontaktdaten:

Re: Kundenverwaltung und Forum zusammenfügen

Beitragvon MarS » Do 4. Jun 2009, 23:25

Ein ähnliches Projekt steht mir in einem Monat auch bevor.
Ich habe es so geplant, dass das Forum die Basis ist, d.h. Userverwaltung läuft über das Forum, Login für die anderen Bereiche basiert ebenfalls auf den Daten des Forums.

Mehr weiß ich leider auch noch nicht.

Gruß, Martin

we:willRockYou
Senior Member
Beiträge: 919
Registriert: Fr 22. Mai 2009, 21:40
Wohnort: Berlin
Kontaktdaten:

Re: Kundenverwaltung und Forum zusammenfügen

Beitragvon we:willRockYou » Fr 5. Jun 2009, 00:15

Ich hab was ähnliches gerade hinter mir, jedoch auch nicht mit der Kundenverwaltung.

Ich hab mir die interessanten Funktionen aus phpBB rausgeholt. Ich glaube irgendwas hatte ich noch anpassen müssen, aber wurde leider nicht dokumentiert. Hier mein Template phpbb_connector_functions.tmpl

Code: Alles auswählen

<?
function phpbb_check_hash($password, $hash) {
   $itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
   if (strlen($hash) == 34) {
      return (_hash_crypt_private($password, $hash, $itoa64) === $hash) ? true : false;
   }
   return (md5($password) === $hash) ? true : false;
}

function _hash_crypt_private($password, $setting, &$itoa64) {
   $output = '*';
   // Check for correct hash
   if (substr($setting, 0, 3) != '$H$') {
      return $output;
   }
   $count_log2 = strpos($itoa64, $setting[3]);
	if ($count_log2 < 7 || $count_log2 > 30) {
      return $output;
   }
   $count = 1 << $count_log2;
   $salt = substr($setting, 4, 8);
   if (strlen($salt) != 8) {
      return $output;
   }
	/**
	* We're kind of forced to use MD5 here since it's the only
	* cryptographic primitive available in all versions of PHP
	* currently in use.  To implement our own low-level crypto
	* in PHP would result in much worse performance and
	* consequently in lower iteration counts and hashes that are
	* quicker to crack (by non-PHP code).
	*/
   if (PHP_VERSION >= 5) {
      $hash = md5($salt . $password, true);
      do {
         $hash = md5($hash . $password, true);
      }
      while (--$count);
   }
   else {
      $hash = pack('H*', md5($salt . $password));
      do {
         $hash = pack('H*', md5($hash . $password));
      }
      while (--$count);
   }
   $output = substr($setting, 0, 12);
   $output .= _hash_encode64($hash, 16, $itoa64);
   return $output;
}

function _hash_encode64($input, $count, &$itoa64) {
   $output = '';
   $i = 0;
   do {
      $value = ord($input[$i++]);
      $output .= $itoa64[$value & 0x3f];
      if ($i < $count) {
         $value |= ord($input[$i]) << 8;
      }
      $output .= $itoa64[($value >> 6) & 0x3f];
      if ($i++ >= $count) {
         break;
      }
      if ($i < $count) {
         $value |= ord($input[$i]) << 16;
      }
      $output .= $itoa64[($value >> 12) & 0x3f];
      if ($i++ >= $count) {
         break;
      }
      $output .= $itoa64[($value >> 18) & 0x3f];
   }
   while ($i < $count);
   return $output;
}

function sql_escape($msg) {
   return mysql_real_escape_string((get_magic_quotes_gpc()?stripslashes($msg):$msg));
}

function getSessionParam($param) {
   if(isset($_POST[$param]))
      return $_POST[$param];
   if(isset($_GET[$param]))
      return $_GET[$param];
   if(isset($_COOKIE[$param]))
      return $_COOKIE[$param];
   if(isset($_SESSION[$param]))
      return $_SESSION[$param];
   return false;
}

function get_user_data($username) {
   $sql='SELECT user_id,
                username,
                user_password,
                user_passchg,
                user_email,
                user_type,
                user_unread_privmsg
         FROM phpbb_users
         WHERE username_clean = "'.sql_escape($username).'"';
   $result = mysql_query($sql) or die('Fehler: '.mysql_error());
   $user = mysql_fetch_row($result);
   mysql_free_result($result);
   return $user;
}

function board_logout() {
   $old_session_id=getSessionParam('phpbb3_thqul_sid');   
   if($old_session_id) {
      $session_id=$old_session_id;
      $sql='DELETE FROM phpbb_sessions
            WHERE session_id="'.sql_escape($old_session_id).'" AND
                  session_ip="'.sql_escape($_SERVER['REMOTE_ADDR']).'"';
      mysql_query($sql) or die('Fehler: '.mysql_error());
   }
}

function board_login($username,$password) {
   $user=get_user_data($username);
   if(!$user || !phpbb_check_hash($password,$user[2]))
      return false;
   $old_session_id=getSessionParam('phpbb3_thqul_sid');   
   if($old_session_id) {
      $session_id=$old_session_id;
      $sql='DELETE FROM phpbb_sessions
            WHERE session_id="'.sql_escape($old_session_id).'" AND
                  session_ip="'.sql_escape($_SERVER['REMOTE_ADDR']).'"';
      mysql_query($sql) or die('Fehler: '.mysql_error());
   }
   else
      $session_id=md5(uniqid());
   $sql='INSERT INTO phpbb_sessions(session_id,
                                    session_user_id,
                                    session_forum_id,
                                    session_last_visit,
                                    session_start,
                                    session_time,
                                    session_ip,
                                    session_browser,
                                    session_forwarded_for,
                                    session_page,
                                    session_viewonline,
                                    session_autologin,
                                    session_admin)
                            VALUES ("'.sql_escape($session_id).'",
                                    '.sql_escape($user[0]).',
                                    0,
                                    '.time().',
                                    '.time().',
                                    '.time().',
                                    "'.sql_escape($_SERVER['REMOTE_ADDR']).'",
                                    "'.sql_escape($_SERVER['HTTP_USER_AGENT']).'",
                                    "",
                                    "'.sql_escape('index.php').'",
                                    1,
                                    1,
                                    0
                            )';
   mysql_query($sql) or die('Fehler: '.mysql_error());
   return $user;
}

function board_logged_in() {
   $session_id=getSessionParam('phpbb3_thqul_sid');
   if(!$session_id)
      return false;
   $sql='SELECT phpbb_users.user_id,
                phpbb_users.username,
                phpbb_users.user_password,
                phpbb_users.user_passchg,
                phpbb_users.user_email,
                phpbb_users.user_type,
                phpbb_users.user_unread_privmsg
         FROM phpbb_users,
              phpbb_sessions
         WHERE phpbb_sessions.session_user_id=phpbb_users.user_id AND
               phpbb_sessions.session_id="'.sql_escape($session_id).'" AND
               phpbb_sessions.session_ip="'.sql_escape($_SERVER['REMOTE_ADDR']).'" AND
               phpbb_sessions.session_browser="'.sql_escape($_SERVER['HTTP_USER_AGENT']).'" AND
               phpbb_sessions.session_user_id!=1';
   $result = mysql_query($sql) or die('Fehler: '.mysql_error());
   $user = mysql_fetch_row($result);
   mysql_free_result($result);
   return $user;
}

#Login!
//$user=board_login("nutzername", "passwort");
//print_r($user);

#Is logged in?
//$user=board_logged_in();
//print_r($user);
?>
Ganz unten ist ein Beispiel wie man einen Login durchführt.

Die Queries in den Funkionen get_user_data() und board_logged_in() müsste man um die Gruppenzugehörigkeit erweitern. Ich hab das so bei mir nicht gebraucht. Bei mir ging es nur darum ob ein Besucher eingelogt ist oder nicht und um die Anzahl ungelesener PNs.
Im Template sollte man anhand der Daten entscheiden können ob ein Nutzer die Seite sehen darf und bei Bedarf auf eine Fehelrseite umleiten.

Eine richtige Verpflechtung würde ich nicht empfeheln, denn das hält kein Update aus.
EOF; //totally retired


Zurück zu „Kundenverwaltung“

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot] und 12 Gäste