Adminpanel für blueimp AjaxChat


Hiho,

auf blueimp.net gibts einen Open Source Ajax Chat der auf jedem Webserver mit php und MySql ganz einfach installiert werden kann. Das ist ne super Sache um sich schnell mit mehreren Menschen abzustimmen ohne ICQ Nummern oder Emailadressen austauschen zu müssen. Bei mir kommt er zB für ein Browserspiel zum Einsatz.

Leider ist die Verwaltung noch etwas unkonfortabel, alle Benutzer müssen über eine “users.php” Datei in ein Array eingepflegt werden. (je nach Konfiguration kann man sich auch ohne Passwort einloggen)

Dazu habe ich mir was kleines einfallen lassen um die Benutzer über eine Datenbanktabelle zu pflegen und ein kleines funktionales Adminpanel gebastelt :-)

Kurze Featureliste:
* Adminaccount:
– Benutzer anlegen (auch Moderator)
– Benutzer löschen
– Passwort für Benutzer zurücksetzen
* Useraccount
– eigenes Passwort ändern

Die Idee dahinter ist ganz simpel:
Wir legen alle Benutzer in einer Datenbank ab und schreiben die Datei (users.php), die Benutzer verwaltet bei Änderungen neu.

Um diese Administration zu ermöglichen brauchen wir Schreibrechte auf CHAT_ROOT/lib/data/users.php und müssen eine Benutzertabelle in der Datenbank anlegen:

Im INSERT Statement kann ein beliebiger Adminbenutzer angelegt werden, hier als Standard als Benutzername und Passwort “admin”.

CREATE TABLE `ajax_chat_user` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `username` text,
  `password` text,
  `role` text,
  PRIMARY KEY (`id`)
);
 
INSERT INTO `ajax_chat_user` VALUES ('1', 'admin', 'admin', 'AJAX_CHAT_ADMIN');

In der Datei “admin.php” muss dann noch die entsprechende Datenbankverbindung an mehreren Stellen eingetragen werden.

$db = new mysqli( 'localhost', 'db-user-name', 'db-pw', 'db-name' );

Am einfachsten über suchen / ersetzen:
“db-user-name” -> eigener Datenbankbenutzer
“db-pw” -> zugehöriges Datenbankpasswort
“db-name” -> Datenbankname

Falls der Adminbenutzer einen anderen Namen als “admin” bekommen hat, müsst ihr in der Datei auch noch an 2 Stellen den entsprechend gewählten Namen eintragen (Zeile 289 und 325), einmal für das schreiben der users.php, und einmal um das evtl versehentliche Löschen zu verhindern.

Die admin.php dannach einfach ins Rootverzeichnis des Chats legen, und über www.url-to-chat.net/admin.php einloggen.

Bekannte Fehler:
- Beim Schreiben der Datei werden Umlaute nicht richtig dargestellt, daher können zur Zeit keine Benutzer/Passwörter mit Umlauten verwendet werden.

Kommentiert ist so gut wie nix, dafür sollte der Code recht sprechend und leicht zu verstehen sein.
Zum Download gehts hier:
UPDATE: bitte die gefixte Version hier laden

Die neueste Version gibts hier: ajaxchat_adminpanel_1.0

Über Feedback jeglicher Art würde ich mich natürlich freuen :-)

Grüße,
Christian

Nachtrag:
ACHTUNG!
Falls ihr die kleine Erweiterung benutzen wollt: Es wird die Datei in der die Benutzer zuvor verwaltet wurden gnadenlöse überschrieben!
Bedeutet: Wenn zuvor Benutzer in der Datei gepflegt wurden, sollte man sich ein Backup machen und diese dann über die Oberfläche in die Datenbank eintragen.

  1. #1 von SAW am 20. September 2010 - 22:09

    Habe alle Anweisungen befolgt. Beim einloggen unter /admin.php bekomme ich folgende Fehlermeldung:

    Fatal error: Call to a member function execute() on a non-object in /var/www/web(…)/html/joomla/chat/admin.php on line 35

    Schade, dass es nicht funktioniert :(

  2. #2 von dreiling am 22. September 2010 - 03:02

    Hi,

    Die Fehlermeldung bedeudet normalerweise ein Fehler im SQL Statement – bist du sicher dass die SQL Statements korrekt ausgeführt wurden und die neue Tabelle angelegt wurde?

    Mein neuester Post (http://www.drailing.net/index.php/2010/09/ajaxchat-adminpanel-neuer-fix/ )hat nun alles korrigiert (für dich dann natürlich die UNIX Version).

    Wenn es nicht hilft dann melde dich bitte nochmal!

    Grüße,
    Christian

  3. #3 von joschi am 4. Januar 2011 - 23:09

    hey hey,

    habe das script installiert, ersteinmal danke dafür :)

    hat auch soweit wundebar funktioniert, nur das nach dem 20. benutzer (ca.) auf einmal das menü zum erstellen von benutzern nicht mehr erscheint. man kann nur noch sein eigenes passwort ändern. könnte den fehler leider bisher nicht ausmachen, auch eine neuinstallation hat nichts gebracht… (den lighttpd habe ich auch neu gestartet…)

    bin echt ratlos

  4. #4 von Patrick Hofmann am 4. Januar 2011 - 23:29

    hab den fehler…
    kurzerklärung:

    beim login wird beim adminpanel als voraussetzung “ADMIN” angegeben, der adminstatus wird allerdings vom skript immerwieder auf moderator umgeschrieben…

    entsprechend habe ich das berechtigungslevel auf “MODERATOR” geändert… d,h. alle mods können nun user adden…

    //login
    if ( !isset($_SESSION["user"]) && !isset($_SESSION["admin"]) ){

    if (isset($_POST["username"]) && isset($_POST["pw"])){
    $username = $_POST["username"];
    $pw = $_POST["pw"];
    $sql = “SELECT password, role FROM ajax_chat_user WHERE username = ‘$username’ “;
    $result = $db->prepare($sql);
    $result->execute();
    $result->store_result();
    $result->bind_result($dbpw, $role);

    while ($result->fetch()){
    if ($dbpw == $pw){
    if ($role == “AJAX_CHAT_MODERATOR”){
    $_SESSION["admin"] = $username;
    } else {
    $_SESSION["user"] = $username;
    }
    echo “erfolgreich eingeloggt“;
    }
    }
    echo”";
    }
    ?>

    mfg joschi

  5. #5 von dreiling am 5. Januar 2011 - 00:21

    Hi Patrick,

    kannst du mal auf deiner Datenbank nachschauen was denn als Rolle bei deinem Adminbenutzer eingetragen ist? Und bist du im Chat selbst noch als Admin?

    Ich habe eben nochmal alles durchgetestet (ca 40 Benutzer angelegt) und ich kann den Fehler absolut nicht nachvollziehen. Einzige Erklärung wäre, dass es dir irgendwie die Adminrolle zerhauen hat.

    Um das zu beheben kannst du auch einfach mal versuchen folgendes Skript auf der Datenbank auszuführen:

    UPDATE ajax_chat_user SET role = ‘AJAX_CHAT_ADMIN’ WHERE username = ‘deinAdminBenutzerName’;

    Drück dir die Daumen und würde mich freuen wenn du dich nochmal meldest ob du weiter gekommen bist… so kann das ja nicht bleiben :-)

    Grüße,
    Christian

  6. #6 von VirusTypeR am 11. April 2011 - 13:26

    Hi, ich habe das Script auch installiert, allerdings bekomme ich folgende Fehlermeldung, wenn ich mich als Admin einloggen will:
    Fatal error: Call to a member function execute() on a non-object in /homepages/…/chat/admin.php on line 35

    Was kann ich da machen?

  7. #7 von dreiling am 12. April 2011 - 21:53

    Hi,

    das deutet auf ein Fehler im SQL Statement ist. Kannst du sicherstellen, dass das SQL Script erfolgreich durchgelaufen ist und in der Datenbank die Tabelle “ajax_chat_user” vorhanden ist?

    Danke für ne kurze Rückmeldung :-)

    Update: ich habe grade eben nochmal das ZIP durchgeschaut und es ist tatsächlich das falsche SQL reingerutscht. Habe es inzwischen aktualisiert, wenn dus also einfach nochmal runterlädst und neu versuchst, müsste es klappen. Sorry!

    Grüße,
    Christian

  8. #8 von marc am 9. Dezember 2011 - 03:22

    hi,

    habe genau den gleichen fehler:
    Fatal error: Call to a member function execute() on a non-object in /homepages/…/chat/admin.php on line 35

    hast du eine neuere version von deinem admin.php und der .sql datei zum runterladen?

    habe das sql statement direkt im phpmyadmin eingegeben, läuft problemlos durch, der eintrag wird erstellt. dann bricht das admin.php script ab mit der o.e. fehlermeldung.

    gruss marc

    PS: ES GEHT!!!
    das einzige was ich geändert habe ist, im .sql file habe ich 3 users mit insert iin die db geladen.

  9. #9 von dreiling am 10. Dezember 2011 - 13:28

    hi marc,

    den fehler den du beschreibst, ist im login und würde bedeuten dass ein fehler im sql statement selbst, oder die tabelle nicht vorhanden ist.

    wenn das sql erfolgreich war, sollte das also eigentlich nicht mehr vorkommen…

    aber freut mich das es nun funktioniert :-)

(wird nicht veröffentlicht)