Android Question Register with php, validate user exists went wrong

SCIS

Active Member
Licensed User
Longtime User
Dear,

This is my code, I get all the usernames/gebruikersnamen out of my database but now i need to check in the database or the user already exists. If this is true, the user need to get a message and need to fill in an other name if their is no match the registration will be succesfull.

Can someone find the fault in my code why the user is able to put an existing name in the database?

Something went wrong in the JobDone sub but i don't know what exactly

Thanks
B4X:
'Registreren van een gebruiker
Sub btnRegistreren_click ()
  
    'Valideert de ingegeven velden van de registratie.
    validateFields
  
    'Verberegt het toetsenbord
    Phone1.HideKeyboard(Activity)
  
    'Geeft een progressschermpje weer met even geduld a.u.b. weer.
    'ProgressDialogShow("Even geduld a.u.b.")
   
End Sub

'Terugkeren
Sub btnGoBack1_click
  
    'Laat de gebruiker terugkeren naar het main scherm.
    StartActivity(Main)
  
End Sub

'Algemene voorwaarden
Sub btnAlgemeneVoorwaarden_click
  
    'laat de gebruiker naar de gebruikersvoorwaarden gaan om deze te lezen.
    StartActivity(Gebruikersvoorwaarden)
  
End Sub

'Valideren velden
Sub validateFields ()
  
    'String koppelen aan edit tekstboxen
  
    strGebruikersnaam = edtGebruikersnaam.Text
    strWachtwoord = edtWachtwoord.Text
    strEmailAdres = edtEmailAdres.Text
  
    'Fout meldingen
  
    Dim temppndstring As String
    temppndstring = edtGebruikersnaam.Text
    Dim temppwdstring As String
    temppwdstring = edtWachtwoord.Text
  
    If temppndstring = "" OR temppwdstring = "" OR edtEmailAdres.Text = "" Then
        Msgbox("Voer alle velden in","Waarschuwing")
    Return
  
    Else If strGebruikersnaam.Length < 3 OR strWachtwoord.Length < 3 Then
        Msgbox("De gebruikersnaam en/of wachtwoord is niet lang genoeg, voer minstens 3 karakters in.","Waarschuwing")
        edtGebruikersnaam.text = ""
        edtWachtwoord.Text = ""
        Return
      
    Else If edtEmailAdres.Text <> "" Then
        Dim matcher1 As Matcher
        matcher1 = Regex.Matcher("\w+@\w+\.\w+", edtEmailAdres.Text)
        If matcher1.Find = False Then
        Msgbox("Voer een geldig email adres in","Waarschuwing")
        Return
      
    Else If cboxAlgemeneVoorwaarden.Checked = False Then
        Msgbox("Lees en accepteer de algemene voorwaarden","Waarschuwing")
        Return  
    Else
  
        'Dim job3 As HttpJob
        'job3.Initialize("Job3", Me)
        'job3.Download("http://www.6itn.be/ticketcenter/api.php?query=INSERT%20INTO%20Gebruiker%20(Gebruikersnaam,wachtwoord,[e-mailadres])%20VALUES('" & edtGebruikersnaam.text &"','"&edtWachtwoord.Text&"','"&edtEmailAdres.Text&"')")
        CheckIfUsersExists
        'ToastMessageShow("Even geduld, gegevens worden gecontroleerd", False)
        Phone1.HideKeyboard(Activity)
        ToastMessageShow("U kunt direct aanmelden", False)
        ProgressDialogShow("Even geduld.")
      
        End If
    End If
  
End Sub

Sub CheckIfUsersExists
  
    job1.Initialize("Job1", Me)
    job1.PostString("http://www.6itn.be/ticketcenter/api.php?query=Select%20Gebruikersnaam%20FROM%20Gebruiker", edtGebruikersnaam.Text)
  
    'job1.PostString("http://www.6itn.be/ticketcenter/api.php?query=SELECT%20Gebruikersnaam%20FROM%20Gebruiker
    Log(job1.ErrorMessage)
    Log("HttpUtils.GetString(SELECT Gebruikersnaam FROM Gebruiker) --> CheckIfUserExists")
    Log("Gebruikersnaam ="& edtGebruikersnaam.Text)
  

End Sub

Sub RegistratieSucces
      
        ToastMessageShow("U registratie is geslaagd, u kunt nu aanmelden.",True)
        Dim job3 As HttpJob
        job3.Initialize("Job3", Me)
        job3.Download("http://www.6itn.be/ticketcenter/api.php?query=INSERT%20INTO%20Gebruiker%20(Gebruikersnaam,wachtwoord,[e-mailadres])%20VALUES('" & edtGebruikersnaam.text &"','"&edtWachtwoord.Text&"','"&edtEmailAdres.Text&"')")

End Sub

Sub JobDone (job As HttpJob)

Log(job.ErrorMessage)
Log("JobDone Sub gestart")


    If job.Success = True Then
  
        Log("HttpUtils.IsSucces = true")
        Select job.JobName
      
        Case "Job1"
      
        Dim parser As JSONParser
        Dim response As String
        response = job1.GetString
        parser.Initialize(response)
        Dim rows As List
        rows = parser.NextArray
        Log("Rows=" & rows)
        'werken met resultaat
        'rows is een lijst (zie hierboven)
        'Elk item is een Map met de kolomnamen als keys en de db-waarden als waarden.
        For i = 0 To rows.Size - 1
            Log("Rows #" & i)
            Dim m As Map
            m = rows.Get(i)
            'values van kolom 1, 2 en 3 loggen
            Log("Gebruikersnaam=" & m.Get("Gebruikersnaam"))
            Log("i=" & i)
            Log("m="& m)
          
        Next

        If i = 1 Then
          
            'Als i in dit geval 1 is, wilt dit zeggen dat we een resultaat krijgen, en slagen we dit op in een variable om later nogmaals te controleren
      
            UserNameChecker = m.Get("Gebruikersnaam")
            Log("Usernamecheck"&UserNameChecker)
          
                If  edtGebruikersnaam.Text = UserNameChecker Then
          
                ProgressDialogHide
                Msgbox("Deze gebruikersnaam is al in gebruik.","Waarschuwing")
                edtGebruikersnaam.Text=""
              
                Else
              
                RegistratieSucces
                Log("FIRST REGISTRATIONSUCCESS")
                End If
              
        Else If i <> 1 Then
      
            'In het andere geval zijn er dus geen overeenkomsten en voeren we de functie uit die zorgt dat de account wordt aangemaakt
          
            ProgressDialogHide
            RegistratieSucces
            Log("SECOND REGISTRATIONSUCCESS")
          
        End If
      
        'Als de ontvangen gegevens van de DB overeenkomen met de ingegeven tekst, geven we een melding weer.
        Case "Job3"
      
        Log("POSTED DATASTRING")
      
        'Na dat de account gemaakt is, wachten we 1 second voor we automatisch teruggaan naar het Loginscherm
        'ProgressDialogHide
        Delay(1000)
        Activity.Finish
      
    End Select
  
    'Als JobDone iet doet geven we een foutmelding weer die laat blijken dat men een verbindingprobleem heeft.
    Else If job.Success = False Then
  
    Msgbox("Er zijn problemen opgetreden, probeer later opnieuw", "Verbindingsproblemen")
    ProgressDialogHide
  
    End If
  
    job1.Release
  
End Sub
 
Top