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
Kundenverwaltung und Forum zusammenfügen
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
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?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
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
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
Anbindung phpBB an webEdition Kundenverwaltung
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!!!
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!!!
-
- Senior Member
- Beiträge: 601
- Registriert: So 4. Jul 2004, 00:24
- Wohnort: Düsseldorf
- Kontaktdaten:
Re: Kundenverwaltung und Forum zusammenfügen
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...
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
Grimmstr. 3 · 40235 Düsseldorf
Telefon ++49-211-4981791 · Telefax ++49-211-4981792
http://www.multimediadesign.net · bolle@multimediadesign.net
Re: Kundenverwaltung und Forum zusammenfügen
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
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
-
- Senior Member
- Beiträge: 919
- Registriert: Fr 22. Mai 2009, 21:40
- Wohnort: Berlin
- Kontaktdaten:
Re: Kundenverwaltung und Forum zusammenfügen
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
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.
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);
?>
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
Wer ist online?
Mitglieder in diesem Forum: Ahrefs [Bot] und 12 Gäste