German Basic4Android MySQL-Tutorialreihe (via PHP)

diversity

Member
Licensed User
Longtime User
Hallo ihr Basic4Android Programmierer.

Inhaltsverzeichnis:

Seite 1. - Beitrag 5 -Abfrage von Benutzernamen & Passwort


Mit diesem Thread möchte ich eine 'kleine' Tutorialreihe anfangen.
In der Tutorialreihe möchte ich besonders auf das Schützen und Kotnrollieren eurer Apps bzw. der Appbenutzer mithilfe von Datenbanken (MySQL) eingehen.
In dieser Tutorialreihe werdert ihr lernen, wie man mithilfe von B4A, PHP und MySQL:
- Eine Authenfikation (Login) anhand von Name & Passwort erstellt.
- Benutzererstellung (Registrierung)
- Daten ausliest
- Sperren von Benutzern
- Sicherung von Daten (Punkte etc.)

etc. könnt, und somit besonders bei kostenlosen Apps optimal den Überblick über eure Apps behaltet.

Da die Tutorialreihe sich nach und nach aufbaut, bitte ich euch es zu respektieren falls mal länger nicht kommen sollte, da ich selber auch arbeiten oder zur Berufsschule gehe.

Die ersten Codeanfänge werden hier in kürze folgen, ich schreibe diesen Thread schon heute, da für die Verwirklichung meiner Projekte ein FTP-Server mit lokaler MySQL-Datenbank notwendig ist.
Und es ja sein kann, dass dies nicht jeder hat, und so der Lernewillige Zeit hat sich dies schonmal einzurichten.
Ich selber benutze Bplaced.net



Solltet ihr neben den Oben genannten Ideen haben, freue ich mich neben diesen auch immer auf Feedback in Form von konstruktiver Kritik oder jeglicher weiterbringenden Argumentationen/Tipps.
Das Tutorial ist selbst geschrieben, und von mir aus ist der Code frei verwendbar. Namennennung nicht zwingend notwendig wär nur besonders bei Kommerziellen Projekten nett.



Schonmal jetzt Viel Spaß beim baldigen lernen, und ich freue mich über euer Feedback zur Tutorialreihe und dem später folgenden Code.

Gruß

Diversity
 
Last edited:

Watchkido1

Active Member
Licensed User
Longtime User
Super, da freu ich mich drauf.

Gesendet von meinem Pulse mit Tapatalk 2
 
Last edited:

t0mt0m

Member
Licensed User
Longtime User
Dann freue ich mich schon mal auf das, was dort kommt, danke für deine Mühen im Vorraus
 

diversity

Member
Licensed User
Longtime User
Teil 1 - Abfrage von Benutzernamen & Passwort

Dieser Teil wird unter folgende Punkte gegliedert:

- Einrichtung der MySQL-Datenbank
- Codeerstellung + Dokumentation für B4A-Compiler.
- Erstellung der benötigen PHP Dokumente (für FTP Server)


MySQL-Datenbank

Erstmal müssen wir die Datenbank mit den Benötigen Spalten sowie Typen erstellen
Hier der Code zum einrichten der Datenbank, dieser sollte soweit selbsterklärend sein.
PHP:
DROP TABLE IF EXISTS `LoginRegisterTUT`; //Datenbank 'Tisch' erstellen wenn nicht vorhanden
CREATE TABLE `LoginRegisterTUT` (
  `ID` int(5) NOT NULL auto_increment, //Spalte1 = ID = integer selbsterhöhend (Zähler)
  `Benutzername` varchar(255) default NULL,  //Spalte2 Benutzername = varchar 255 Zeichen = Unzugewiesen 0
  `Passwort` varchar(255) default NULL,       //Spalte3 Passwort = varchar 255 Zeichen = Unzugewiesen 0
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;


Die App für das Smartphone

Designer:

Wir Benötigen
Layoutname = LoginScreen
Toolboxelement EventName Event
EditText BenutzernameTXT n/a
EditText PasswortTXT n/a *optimal: Textstyle => Password = True
Button LoginBTN Click

*Optimal: Mein Designer-Script zum ausrichten der Elemente
PHP:
BenutzernameTXT.Top = 15%Y
BenutzernameTXT.Height = 15%Y
BenutzernameTXT.Width = 90%X
BenutzernameTXT.HorizontalCenter = 50%X

PasswortTXT.Top = 45%Y
PasswortTXT.Height = 15%Y
PasswortTXT.Width = 90%X
PasswortTXT.HorizontalCenter = 50%X

LoginBTN.Bottom = 100%Y
LoginBTN.Height = 20%Y
LoginBTN.Width = 100%X
LoginBTN.HorizontalCenter = 50%X



Application - Code


PHP:
Sub Process_Globals
   
   Dim HClient As HttpClient
End Sub

Sub Globals
   Dim LoginBTN As Button
   Dim PasswortTXT As EditText
   Dim BenutzernameTXT As EditText
   Dim Panel1 As Panel
End Sub

Sub Activity_Create(FirstTime As Boolean)

   If FirstTime Then
   Activity.LoadLayout("LoginScreen")
   Else : End If
   
   HClient.Initialize("HClient")
   
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)
   
End Sub

//Datenübertragung an PHP-Datei mittels URL-Wertübergabe (?Wertname=Wert&...)
Sub LoginBTN_Click
   Dim request1 As HttpRequest
   request1.InitializeGet("http://diversity.bplaced.net/AndroidDB/Datenbank.php?Benutzername=" & BenutzernameTXT.Text & "&Passwort=" & PasswortTXT.Text) 
   HClient.Execute(request1, 1)
End Sub

Sub hclient_ResponseSuccess (Response As HttpResponse, TaskId As Int)
    Dim resultString As String
    resultString = Response.GetString("UTF8")
   
   ToastMessageShow(resultString , True)
   
    If resultString = "Richtig" Then
   //Erfolgreicher Login...
   Else
   ToastMessageShow("Benutzername oder Passwort falsch", false)
   End If
End Sub

//Falls keine Verbindung möglich ist
Sub hclient_ResponseError (Response As HttpResponse, Reason As String, StatusCode As Int, TaskId As Int)
    ToastMessageShow("Error connecting: " & Reason & " " & StatusCode,False)
    If Response <> Null Then
        Log(Response.GetString("UTF8"))
        Response.Release
    End If
End Sub

//Optimal für Überprüfung von Passwort im Klartext
Sub PasswortTXT_EnterPressed
   ToastMessageShow(PasswortTXT.Text,True)
End Sub
Info: ' wurden durch // für die Farbliche Hervorhebung vom PHP-Codeerkenner ersetzt

PHP Datei:

PHP:
<?php

//Mit Datenbank verbinden
$mysql_connect = mysql_connect('localhost', 'Datenbankname', 'Passwort') or die ("Keine Verbindung zum Server");
mysql_select_db('Datenbankname') or die ("Keine Verbindung zur Datenbank");


$Benutzername = $_GET['Benutzername'];  //Werte aus URL auslesen
$Passwort = $_GET['Passwort'];      //Werte aus URL auslesen
$query = "SELECT * FROM `LoginRegisterTUT` WHERE `Benutzername`='$Benutzername' AND `Passwort`='$Passwort'";
$result = mysql_query($query);
$resultcount = mysql_num_rows($result);

if ($resultcount == 0){


echo "Falsch"; //Wenn Datenbank eintrag nicht vorhanden
}
else {
echo "Richtig"; //Wenn Datenbank eintrag vorhanden
}  

mysql_close ($mysql_connect); //Verbindung zur Datenbank schließen

?>


Wenn ihr alles richtig gemacht habt, sollte die Anwendung so funktionieren

Ich bedanke mich für eure Aufmerksamkeit und hoffe, dass das Tutorial ein bisschen helfen konnte, weitere Teil folgen bald (keine Zeitangaben ;))
Freu mich über euere Antworten und allge. Feedback

PS: Stellt BITTE eure Fragen, das gibt ersten zurück das ihr interessiert am lernen seit, und meine Kommetare(Aussagen zu eizelnen Teilen) sind eventuell auch ziemlich mager gehalten. Nur durch Fragen/Antworten könnt ihr verstehen und auch beim nächste mal selber Anwenden.

Zusatz: Es stimmt, eigentlich wäre ein Hash (einmalige 'verschlüsslung' => "nicht" entschlüsslbar) besser um die Daten in der MySQL Datenbank zu speichert, weil man NIE was im klartext speichern sollte.

Es gibt noch bessere Methoden die Daten an die PHP Datei zu übergeben, ich nutze nur die übergabe mithilfe der URL weil ich die gesamte Bandbreite von möglichekeiten angeben möchte. Und weil ich finde sie ist allgemein einfacher für beginner anzuwenden.
Die Möglichkeit von Erel findet irh Hieer: http://www.b4x.com/forum/basic4andr...-connect-android-mysql-database-tutorial.html

Gruß/Best Regards
Diversity
 
Last edited:

alienhunter

Active Member
Licensed User
Longtime User
Hallo Diversity ,

vielen Dank fuer den beitrag , das problem ist wie man einen SQL server einrichtet .. WAMP XAMP oder so ,
hast du schon schon mal sowas eingerichtet ?

ich habe ein client/server mit sqlite gemacht und RDC was auch sehr gut funktioniert ,
aber ich bekomme den MYSQL Server nicht zum laufen :( WAMP XAMPP) geschweige noch an das ding zu verbinden
alles was ich gefunden habe im forum geht nicht :(
ich habe dein beispiel auch ausprobiert aber es verbindet nicht
donner blitz ich schlage mein Server kurz und klein ...:rolleyes:
gruss aus Canada
 
Top