[C#/PHP] Externer Login für WoltLab Burning Board 3 [15.10.2012]

    • Release
    • Open Source

    Es gibt 54 Antworten in diesem Thema. Der letzte Beitrag () ist von Pac.

      Hey,
      ich würde das ganze Script ganz gerne nutzen, bekomme aber schon beim Beispielprojekt sowohl mit dem async-, als auch mit dem "normalen" Button folgenden Fehler:
      Eine nicht behandelte Ausnahme des Typs "System.Runtime.Serialization.SerializationException" ist in System.Runtime.Serialization.dll aufgetreten.
      Zusätzliche Informationen: Fehler beim Deserialisieren des Objekts "vom Typ WbbExternalLogin.ServerResponse.LoginResponse". Unerwartetes Zeichen '<'.
      @FunnySunny:
      Seltsam. Ist davon schon was zu sehen, wenn du das Skript so aufrufst? Oder mit Beispieleingaben?

      Die URL ist die hier:

      Quellcode

      1. /login.php?username=Benutzer&password=sha1


      Da fällt mir ein, ich müsste es ohnehin nochmal neu schreiben. Benutzt ja noch die mysql_*-Funktionen.
      „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

      -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
      Ja, das war schon mit Beispieleingaben.
      Ich habe jetzt aber mal exakt den von dir geposteten Link direkt aufgerufen und die Ausgabe war folgende:
      <br />
      <b>Warning</b>: mysql_connect(): Unknown MySQL server host 'DBHOST' (2) in <b>/blabla/externalLogin/includes/db.inc.php</b> on line <b>8</b><br />
      Error connecting to Database.
      Das sollte das unpassende Zeichen "<" erklären. Der Host sollte mit "localhost" aber korrekt eingestellt sein.

      EDIT: Nachträgliche Zensur. lol.
      Ist in der Config sicher alles korrekt eingetragen? Wurde an den Skripten bereits was verändert, insbesondere bei Herstellung der Datenbankverbindung?
      „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

      -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
      Was mich irritiert ist, dass in der Fehlermeldung der Name der Host-Konstante auftaucht. Wie sieht denn diese Sektion in der Config aus? Ansonsten fällt mir da jetzt nichts ein, ist ein ganz standardmäßiger Verbindungsaufbau, wenn auch über mysql_connect.
      „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

      -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
      Hier mal die config.inc.php, ich habe die Zugangsdaten natürlich "zensiert".

      PHP-Quellcode

      1. <?php
      2. define('DBHOST', 'localhost');
      3. define('DBNAME', 'Die USK war hier');
      4. define('DBUSER', 'Die USK war hier');
      5. define('DBPASS', 'Die USK war hier');
      6. define('DBPREFIX', 'wcf1');
      7. define('WBBPREFIX', 'wbb1_1');
      8. define('SUCCESS', 1);
      9. define('DATA_MISSING', 2);
      10. define('DATA_INVALID', 4);
      11. define('USER_NO_MATCH', 8);
      12. define('USER_BANNED', 16);
      13. define('WRONG_PASS', 32);
      14. ?>
      Was, wenn du deine Daten direkt an die mysql_connect-Funktion übergibst?
      „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

      -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
      Funktioniert so halb. Es wird zwar ein "richtiges" Ergebnis (Statuscode) ausgegeben, das allerdings mit einer Warnung garniert.
      <br />
      <b>Warning</b>: mysql_num_rows() expects parameter 1 to be resource, boolean given in <b>/blabla/externalLogin/includes/login.inc.php</b> on line <b>20</b><br />
      {"StatusCode":"USER_NO_MATCH","UserData":[]}
      Sorry, ich hab keine Ahnung was du da machst. Die Zugangsdaten sind ja dann wohl doch nicht korrekt.
      „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

      -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
      Richtig, wenn ich diesen Link aufrufe, sind die Daten natürlich nicht korrekt: /login.php?username=Benutzer&password=sha1
      Das ist aber auch nicht das Problem. Das Problem ist folgende Ausgabe:
      <br />
      <b>Warning</b>: mysql_num_rows() expects parameter 1 to be resource, boolean given in <b>/blabla/externalLogin/includes/login.inc.php</b> on line <b>20</b><br />
      {"StatusCode":"USER_NO_MATCH","UserData":[]}
      Die letzendliche Anwendung kann mit dem HTML wieder nichts anfangen und wirft daher die selbe Exception wegen dem unerwarteten Zeichen "<".
      Dann ist die Abfrage fehlgeschlagen. Gibt es die entsprechenden Strukturen? Was ist mit den Zugangsdaten?
      „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

      -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
      Aha. Ich habe jetzt in der login.inc.php noch einmal alle Tabellenpräfixe, die ja eigentlich aus Variablen stammen sollten, direkt eingetragen. Jetzt funktioniert es anscheinend. Sehr kompliziert, aber irgendwie kommt man ja immer zu einer Lösung. :D Danke für deine Unterstützung. :)

      EDIT: Zu früh gefreut. Beim direkten Aufruf im Browser kommt jetzt zwar keine PHP-Warnung mehr, wenn ich das ganze aber im Programm (mit korrekten Beispiel-Logindaten) aufrufe, geht es weiter:
      Eine nicht behandelte Ausnahme des Typs "System.Runtime.Serialization.SerializationException" ist in System.Runtime.Serialization.dll aufgetreten.

      Zusätzliche Informationen: Fehler beim Deserialisieren des Objekts "vom Typ WbbExternalLogin.ServerResponse.LoginResponse". Der Wert "SUCCESS" kann nicht als Typ "Int32" analysiert werden.
      ohne es mir näher angeschaut zu haben aber gab es nicht vor "kurzem" ein update fürs wcf/wbb?
      evtl. kommen daher die probleme? nebenbei n doppelpost? echt jetzt?
      Ich werde das Skript demnächst auf PDO umsetzen, vielleicht auch ganz neuschreiben.

      @FunnySunny: Zu deinem jetzigen Problem: Ich hab mich jetzt nochmal hingesetzt und eine saubere Installation meines Skriptes auf mein Testforum gezogen. Bei mir sehe ich in den Rückgaben stets Zahlen als Statuscode, keine Strings, weshalb das Parsen bei mir verständlicherweise funktioniert. Für Eigenbauten mag ich nur ungerne breiten Support geben, denn "SUCCESS" sollte in keinem Falle irgendwo auftauchen.

      @slice: Gut möglich - in meinem Testforum kann ich mich nicht mehr anmelden, weil eine deprecated-Meldung den Login behindert - per Skript aber theoretisch weiter möglich. Ich werde sehen, wann ich dafür Zeit aufbringen kann.
      „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

      -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Lukas“ ()

      So, zur Zwischeninfo: Ich plane derzeit, den externen Login als WBB-Paket komplett neuzuschreiben. Damit ist sicher nicht nur der Komfort bei der Installation vorhanden ;)

      Falls ihr also Anregungen oder Wünsche habt, wäre jetzt der ideale Zeitpunkt sie mir zu eröffnen. An der allgemeinen Struktur würde ich sonst nichts ändern.

      Im ACP gibt es derzeit diese Optionen:


      mfg
      Lukas
      „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

      -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
      Hi,

      die Idee hatte ich auch schon. Ich werde mal sehen ob ich das mit meinen WBB-Kentnissen umgesetzt bekomme ;)

      mfg
      Lukas
      „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

      -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
      Anstannt einer White-/Blacklist viellecht auch die Möglichkeit, nur einzelne Benutzergruppen für den Login zuzulassen? Z. B. "Alle Moderatoren aus VB-P".
      Alternativ auch dynamische Gruppen wie z. B. "Alle, deren Posts > 50 sind".
      Von meinem iPhone gesendet
      Die Option nach Gruppen anzupassen erscheint mir sogar noch ein wenig sinnvoller. Ich werd mal sehen, was man da so machen kann.

      Dynamische Gruppen klingt schwer, ich wüsste nicht, dass das WBB/WCF da irgendwas für stellen würde.
      „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

      -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.