Benutzer extern registrieren

  • Affected Version
    WoltLab Suite 3.0

    Heyho ich tüftle nun schon seit stunden und finde das problem nicht ich möchte einen nutzer über ein php script extern registrieren dieses hier wäre das externe script:




    Code
    if user exist

    Hier überprüfe ich ob der Nutzer bereits registriert ist das geht soweit


    Code
    //Wbb Teil


    hier kommt nun der etwas komische teil die registrirung scheint zu klappen es wird auch am ende ein USER_REGSITER_SUCCESS ausgegeben und der Nutzer taucht auch in der Mitglieder liste auf mann kann in auch bearbeiten aber sobald sich der Nutzer einloggen möchte steht da "Die angaben sind ungültig". Ich weiß einfach nicht mehr weiter ;(

  • genau aus dem Grund legt man user auch nicht manuell an sondern über die API...

    Wenn du danach suchst wirst du auch im Forum entsprechende Beispiele finden wie man das anstellt ;)

  • Sollte es nicht helfen, wenn er auf die Klasse wcf\util\PasswordUtil zurückgreift?


    Vermutung: Die Fehlermeldung beim Anmelden könnte daraus resultieren, dass in der Datenbank kein prüfbarer, encrypted Passwordhash landet.

    PHP
    require('../global.php');
    $password = $_POST["password"];
    $password = wcf\util\PasswordUtil::getDoubleSaltedHash( $password );

    Wäre zumindest einen Versuch wert..


    Bei mir funktioniert zumindest eine derartige Ausgabe - und das sieht den Strings in der Datenbank doch recht ähnlich, das Ergebnis.

    PHP
    require('../global.php');
    $password = 'password';
    $password = wcf\util\PasswordUtil::getDoubleSaltedHash( $password );
    echo $password; 
    // Ausgabe: $2a$08$DTZR7iKv613IchmKP9LzbOUUOqCFwtEcqAtSpqNDyTo70amcq0Nj6

  • Das passwort wird anscheinend automatisch gehast der benutzer tauch auch in der Benutzerliste auf mann kann in auch bearbeiten allerdings wenn ich mich einloggen möchte kommt Der Benutzername XXX konnte nicht gefunden werden. sobalt ich den benutzer bearbeite also im acp und das ganze abspeichere kann ich mich auch erfolgreich einloggen

  • Arg, vergiss meine aussage, ich hab wegen der mysqli sache gar nicht bemerkt dass er dazwischen noch die registrierung korrekt durchführt^^

  • Arg, vergiss meine aussage, ich hab wegen der mysqli sache gar nicht bemerkt dass er dazwischen noch die registrierung korrekt durchführt^^


    kein problem sollte das villeicht auch noch mit der api umsetzen ich mach mich mal schlau.


    Edit:// hab hier noch was herausgefunden wenn ich den benutzer aktiviere/deaktiviere bekomme ich folgenden error:



    Das ist nun mein code:



    Sorry ich hab noch nie etwas mit der Woltlab API am Hut gehapt ich hab auch nur ein paar bessere PHP Kenntnisse (Bin java Programmierer ^^) kann mir irgendjemand vielleicht sagen ob ich was falsch gemacht hab bzw mir mal erklären wie ich mit der api überprüfen kann ob ein Benutzer bereits vorhanden ist bzw ein eigenes Benutzerfeld ausfülle ohne mysql

  • So hab nun den fehler selbstständig behoben das problem war das im array ein zeilenumbruch statt fand ka wieso.


    Das hier ist mein code:


    Wenn noch jemand weiß wie ich ohne mySQL zu benutzen überprüfe ob der Nutzername bereits vergeben ist dann bitte her damit das würde mir echt extrem helfen ^^ genau so wie ich benutzerdefinierte Profilfelder beschreiben kann ^^

  • Wenn noch jemand weiß wie ich ohne mySQL zu benutzen überprüfe ob der Nutzername bereits vergeben ist dann bitte her damit das würde mir echt extrem helfen

    Dafür gibt es im UserRegistrationUtil eine entsprechende Methode die du nutzen kannst:

    https://github.com/WoltLab/WCF…trationUtil.class.php#L26


    genau so wie ich benutzerdefinierte Profilfelder beschreiben kann

    Werte für Benutzerprofilfelder kannst du im options-Array innerhalb deines Aufrufes von UserAction mit übergeben.

    PHP
    $userAction = new \wcf\data\user\UserAction(array(), 'create', array(
          'data' => $data,
          'options' => array(
            \wcf\data\user\User::getUserOptionID('nameOfThisOption') => 'New Value'
           )
    ));
  • Dafür gibt es im UserRegistrationUtil eine entsprechende Methode die du nutzen kannst:

    https://github.com/WoltLab/WCF…trationUtil.class.php#L26


    Werte für Benutzerprofilfelder kannst du im options-Array innerhalb deines Aufrufes von UserAction mit übergeben.

    PHP
    $userAction = new \wcf\data\user\UserAction(array(), 'create', array(
          'data' => $data,
          'options' => array(
            \wcf\data\user\User::getUserOptionID('nameOfThisOption') => 'New Value'
           )
    ));


    Vielen dank jetzt bin ich schon mal etwas weiter, tut mir leid bin aktuell zu blöd auf die UserRegistrationUtil.class.php zuzugreifen keine Ahnung was ich verkehrt mache ich hab auch schon mal danach gegoogelt da kommen 4 seiten und die meisten beispiele sind von 2009 bin echt gerade planlos.




    Ok nun geht es trotzdem danke :)

  • Ich grabe mal das Thema aus...


    Ich bin auch auf der Suche nach Hilfe eine externe Benutzerregistrierung durchführen zu können... Ich hab mich mal an dem Script versucht aber irgendwie versteh ich das nicht...


    Der Plan war: Ich wollte per Java "Benutzername, Passwort und Email" an ein Script übergeben welches dann den Account in die Datenbank einträgt:/. Sollte auch prüfen ob der Benutzeraccount bereits vergeben ist usw. Bin ich da überhaupt auf dem richtigen Weg oder lässt sich das irgendwie einfacher managen? Ich wäre über jede Hilfe sehr dankbar ;)

  • Hallo @scheini sorry für die späte antwort. Was wir brauchen ist ein php script und den Java Code auf das php script können wir über URLConnection zugreifen hier ist mal ein kleiner auszug des PHP scripts:



    Über die Sicherheit der Post Connection lässt sich streiten sobald das Script auf der Lokalen Maschine läuft dürfte es kein Problem geben sollte man nun eine getrennte Website haben ist das eine potentielle Sicherheitslücke. Um diese lücke zu dezimieren wird hier mit dem User-Agent gearbeitet wir können hier mit benutzerdefinierte User-Agent fremd entzwecken :whistling: damit nicht jeder unser Forum sofort mit neuen User befüllt. ^^


    Über java kann man ganz einfach zugreifen:



    Ich hoffe im Code ist alles gut beschrieben.

  • Das ist in höchstem Maße sinnlos. Die Verbindung lässt sich problemlos sniffen. Ich würde eher reCaptcha verbauen.


    Ermöglichst du auch den Login direkt in Java?

  • Naja gut kommt immer auf den Anwendungsfall an in meinem Fall ist es so aufgebaut -> Website & RootServer haben eine separate IP Adresse der Rootserver besitzt 2 IP Adressen über die 1. Connectet sich der Spieler zum Server und kann sich im Spiel per Java Plugin über die 2. IP adresse im Forum registrieren ich wüsste jetzt nicht wo man da sniffen könnte da der Client ja absolut gar keine Informationen hat des Java Codes hat.

    Soweit ich weiß wäre die einzige Option sich zwischen den Server & der Website einklinken. Leider weiß ich nicht wie so etwas funktioniert dann könnte man es mal testen so aus eigen Interresse 8o.

  • Das Anwendungsziel ist: vom Minecraft Server aus möchte ich die Möglichkeit haben, neue Benutzer auf der Homepage anlegen zu lassen, das wenn sie auf der Homepage oder dem Forum sind, sich gleich einloggen können. Die Werte sollen in die Datenbank geschrieben werden und die

    • Spieler sollen automatisch einer Benutzergruppe hinzugefügt werden.
    • natürlich soll geprüft werden ob der Benutzer existriert...

    Minecraft Server und Homepage (WSC 3.1) befinden sich auf dem selben Root..


    Ich denke mal das klingt schon ganz gut. (Danke für die gute Erklärung, wieder etwas gelernt):


    Edited once, last by scheini ().