Registratie op database niveau wil niet werken

Hulp nodig bij je installatie of kom je ergens niet uit? Probeer phpBB3! Problemen lossen we samen met je op.
phpBB 3.0 is End of support per 1 januari 2017. Dit forum is hier enkel ter archief. Het wordt aangeraden te upgraden naar phpBB 3.2
Forumregels
phpBB 3.0 is End of support per 1 januari 2017. Dit forum is hier enkel ter archief. Het wordt aangeraden te upgraden naar phpBB 3.2
Gesloten
vbSteve
Berichten: 3
Lid geworden op: 21 apr 2008, 10:52

Registratie op database niveau wil niet werken

Bericht door vbSteve » 21 apr 2008, 11:49

  • Adres van je forum: niet beschikbaar
    Event. modificaties op je forum: geen
    Wanneer ontstond het probleem? erm...
    phpBB versie: 3.0.1

    Heb je onlangs iets veranderd aan je forum? Nee
    Wat is het probleem?


..

Goede middag PHPBB communitie,

Als hosting provider hebben we net onze forum aanbiedingen geüpgrade van phpbb2 naar phpbb3 (de nieuwste release). Wij hebben nu een automatiseringsprobleem bij het installeren van nieuwe web accounts. Ons systeem installeert namelijk automatisch een phpbb3 forum op onze klant zijn of haar website, dit werkt probleemloos (omdat we met een voor-gedefinieërde installatie werken), maar het toevoegen van een ServerAdmin account vanuit de automatisering script blijkt maar niet te lukken.

De script die een user account aanmaakt is in Visual Basic .NET geschreven en wordt op database niveau uitgevoerd. We zouden graag willen weten waar we juist in de fout zijn gegaan of waar we juist op moeten letten om een nieuwe account toe te voegen. We hebben al uren naar de functie user_add() gekeken in functions_users.php, maar daar worden we niet wijzer van ;( (Waarschijnlijk omdat we niet zo'n php gurus zijn als julie :à))


De script code is als volgt:

Code: Selecteer alles

    ' **********************************************************************
    '  Doel:  Maak een gebruikers account aan op de PHPBB3 database
    '         Retour 'false' indien niet gelukt.
    ' **********************************************************************
    Public Function phpbb3_add_user( _
    ByVal WebAccount As Integer, _
    ByVal Username As String, _
    ByVal Password As String, _
    ByVal Email As String, _
    Optional ByRef ERROR_VALUE As String = "") As Boolean

        Dim MySQL As class_mysql = New class_mysql                  ' Database systeem
        Dim Encryption As class_encryption = New class_encryption   ' Encryptie engine
        Dim e As String                                             ' Fout waarde referentie pointer
        Dim Query As Object, ResultSet As Object                    ' Database waardes
        Dim SQL As String                                           ' SQL
        Dim i As Long                                               ' Teller

        ' Kijk eerst of er wel een phpbb3 is geïnstalleerd op deze account:
        If Not is_geinstalleerd(WebAccount, "__PACKAGE_PHPBB30X__") Then
            ERROR_VALUE = "Geen PHPBB3 installatie gevonden!"
            Return False
        End If

        ' Maak een verbinding naar de database server
        If Not MySQL.connect("local.server12.lan", "root", "root", e) Then
            ERROR_VALUE = "Verbinding naar de database server is mislukt: " & e
            Return False
        End If

        ' Selecteer dat database van de gebruiker:
        If Not MySQL.select_db(Format(WebAccount, "000") & "_01_website") Then
            ERROR_VALUE = "Er is een fout opgetreden bij het selecteren van de database. " & _
                "Mogelijk bestaat deze niet of zijn er geen rechten ingesteld."
            Return False
        End If


        ' PHPBB3 user tebel moet normaal "000_01_website.phpbb3_users" zijn
        ' Eerst kijken of de gebruikersnaam of email al in gebruik is:
        Query = MySQL.query("SELECT * FROM phpbb3_users WHERE username='" & Username & "' OR  email='" & Email & "';", e)
        If Not Query Then
            ERROR_VALUE = "SQL fout: " & e
            Return False
        End If
        i = MySQL.count_rows(Query)
        If i > 0 Then
            ERROR_VALUE = "De gebruikersnaam of email adres bestaat al!"
            Return False
        End If

        ' Maak een Useraccount aan:
        SQL = "INSERT INTO phpbb3_users "
        SQL = SQL & "('user_type', 'user_ip', 'user_regtime', 'username', 'username_clean', 'user_password', 'user_email') "
        SQL = SQL & "VALUES( 1, '', " & UnixTime(Now()) & ", '" & Username & "', "
        SQL = SQL & "'', '" & Encryption.MD5(Password) & "', '" & Email & "');"
        If Not MySQL.query(SQL, e) Then
            ERROR_VALUE = "SQL fout: " & e
            Return False
        End If

        ' We zijn hier klaar
        MySQL.close()   ' Verbreek de verbinding met database server
        MySQL = Nothing ' Verwijder het object uit het geheugen

        Return True ' Alles successvol
    End Function
Gaarne een oplossing,
Hartelijke dank bij voorbaat.
Steve.

Gebruikersavatar
Tom V
Berichten: 2487
Lid geworden op: 24 jan 2006, 17:04
Locatie: Houtvenne (BE)
Contacteer:

Re: Registratie op database niveau wil niet werken

Bericht door Tom V » 22 apr 2008, 12:14

Je script kan sowieso niet werken (passwoord is geen standaard MD5 meer, users moeten ook een groep hebben, etc.)

Maar waarvoor dient het script net? Om een standaard gebruiker aan te maken?

Dan lijkt het me makkelijker om de gebruiker die standaard geregistreerd staat, (user_id 2) gewoon aan te passen.
Dan moet je maar een paar dingen updaten: naam, pass, email. (en dat zijn de belangrijkste gegevens volgens mij)

Waarvan het passwoord maken het moeilijkste is aangezien, zoals gezegd, het geen standaard MD5 is.
Ik stel voor hier eens ff in de brondcode te gaan kijken, als het dan nog niet lukt, kun je altijd hier terecht.

vbSteve
Berichten: 3
Lid geworden op: 21 apr 2008, 10:52

Re: Registratie op database niveau wil niet werken

Bericht door vbSteve » 22 apr 2008, 14:50

De standaard account "Administrator" wordt al gebruikt door de klant zelf. Bij het installeren van een nieuwe webaccount op onze server worden er meerdere extra accounts automatisch aangemaakt (of dit was zo toen we de phpbb2 nog gebruikten), eentje voor "ServerAdmin", eentje voor "Developer", enz...

De script zelf is een precedure functie die telkens wordt aangeroepen en telkens met andere parameters bijvoorbeeld:

Code: Selecteer alles

If Not phpbb3_add_user(1, "ServerAdmin", "password", "my@email.com", e) Then MsgBox(e)
Als klap bij de vuurpijl hebben we gisteren ook nog ontdekt dat dezelfde soortgelijke functie ook gebruikt wordt op de klant zijn of haar website zelf. Meestal in een project gebruiken we voor-gedefiniërde websites die al kant en klaar zijn en zo'n website is in ASP .NET geschreven, en wanneer iemand op de website zelf registreert, zou het systeem automatisch de nieuwe gebruiker moeten toevoegen aan de forum database zodat men maar één keer moet registreren.
Dus het makkelijkste is om bij deze aanpak te blijven.


Wat betreft het wachtwoord, wel we hadden al zoiets gedacht aan het feit dat het geen md5 algoritme niet meer is om dat het wachtwoord die bij de standaard account staat niet op een md5 algoritme lijkt, maar we hebben al veel bron code ontleed, maar ja, we weten gewoon niet echt waar we moeten beginnen. PHPBB3 is zo anders and groter geworden dan de vorige versies ;à)
Alhoewel dat ik zo'n gevoel heb dat het mischien iets te maken heeft met de functie "phpbb_hash" in ./include/functions.php...

Greetz
Steve.

vbSteve
Berichten: 3
Lid geworden op: 21 apr 2008, 10:52

Re: Registratie op database niveau wil niet werken

Bericht door vbSteve » 23 apr 2008, 12:47

Okee opgelost, ik ben eruit gekomen... of toch bijna ;)

Die oplossing die ik heb gevonden is wel omslachtig maar het blijkt te werken.

Gepikt van phpbb.com :)

Gesloten