1# Tutorial - Erstellen einer Login/Register App mit MySQL/Php

  • Guten Tag liebe Community


    Dies ist das erste einer vielzahl von Tutorial's wie man eine App für sein Forum erstellt.
    In diesen Tutorials gezeigen Code's sind abweichend von dem Orginalcode der M-Core App!



    1. Erstellen der MySQL Datenbank

    Ihr solltet euch zuerst eine MySQL Datenbank erstellen (Navicat,..). Dazu installiert ihr nun zuerst Xampp und danach Navicat (Downloadlink's sind unten zu finden). Öffnet nun die Console in Navicat in dem Ihr rechtsklickt auf eure Verbindung und auf Console klickt. Dort gebt ihr nun folgende SQL Code's ein.

    Code
    create database android_api
    Code
    use android_api

    2. Erstellen der PHP API Klassen

    Diese Funktion wird allgemein in jeder Standartverbindung der PHP API Klassen verwendet.

    Erstellt nun einen Ordner in eurem xampp/htdocs namens "android_login_api" und in diesem Ordner einen Ordner namens "include"
    Die folgenden PHP File's müssen in folgende Ordner:

    config.php - In den "include" Ordner
    DB_Connect.php - In den "include" Ordner
    DB_Functions.php - In den "include" Ordner
    index.php - In den "android_login_api" Ordner

    config.php - Einstellung zur Verbindung der Datenbank

    Code
    define("DB_HOST", "");
    define("DB_USER", "");
    
    
    define("DB_PASSWORD", "");
    define("DB_DATABASE", "");
    
    
    ?>



    DB_Connect.php - Verbindung und schließen der Sitzung


    DB_Functions.php -Diese Datei enthält Funktionen, um Benutzer in der Datenbank zu speichern etc.

    index.php Diese Datei spielt die Rolle akzeptierte anfragen Antworten zu geben.

    3. Das Android Projekt starten

    Zuerst sollten wir nun Eclipse starten zum Programmieren der App, den Download findet ihr unten.

    Erstellt nun ein neues Projekt indem ihr auf File -> New Android Projekt klicken. Danach füllt ihr alle Felder aus und habt nun ein neues Projekt.
    Als nächstes erstellen wie ein neues Package für unsere ganzen library files. Dazu macht ihr einen Rechtsklick auf src -> New -> Package und nennt diese "library"

    JSON Parser Klasse

    Als nächtes brauchen wir eine Parser Klasse um die JSON zu analysieren und zu antworten.
    Dazu erstellt ihr eine Neue Klasse in eurer library und nennt diese "JSONParser.java" und fügt folgenden Code unter eurem

    Code
    package com.example....;

    .

    SQL Database Handler Klasse

    Ich benutze in der Anwendung eine SQLite Datenbank zum speicher von Benutzerdaten. Doch es bleibt euch überlasse welche Ihr wählt.

    Erstellt nun wieder ein neues package namens "DatabaseHandler.java" und füge folgenden Code hinzu nach

    Code
    package com.example....;

    .

    User Function Klasse

    Erstellt nun wieder eine neue Klasse unter dem library package und nennt diese "UserFunctions.java"
    fügt wieder folgenden Code hinzu nach:

    Code
    package com.example....;

    .

    Teil 2 wird nächste Woche kommen und dort werde ich euch zeigen, wie man das Design der Android App mit den Funktionen verbindet.
    Bis dahin

    Euer Armin ♥

    [HR][/HR]

    Downloadlinks

    Xampp
    Navicat
    Eclipse

    Alle Downloadlinks sind von Chip.de und enthalten keinerlei Vieren etc.


    [HR][/HR]

    Credits

    Ein besonderes Dankeschön geht an meine Kollegen von Androhive.info die mit mir daran gearbeiten haben und mir die möglichkeit geben haben solch tolle funktionen gemeinsam mit Ihnen zu erstellen. Natürlich möchte ich mein Team "LAZY" nicht vergessen die mir die bekanntschaft gemacht haben.[HR][/HR]

    • Die mysql Erweiterung sollte in neueren Projekten nicht mehr verwendet werden ... In der PHP Dokumentation wird zu mysqli oder PDO geraten.
    • In DB_Connect config.php einzubinden und mit diesen globalen Variablen die Datenbankverbindung herzustellen ist extrem unflexibel. Deine Klasse ist nicht nur an eine andere Datei gebunden, sie kann auch nur zu einer einzigen Datenbank verbinden, ist also alles andere als wiederverwendbar. Schlechter Stil.
    • Auch wenn du die Verbindung in einer Klasse herstellst, ist dein Code so nicht objektorientiert. Würdest du die Methode von DB_Connect static machen (das würde bei der mangelnden Flexibilität keinen Unterschied machen), könntest du auch einfach Funktionen nehmen.
    • Teilweise schreibst du das public vor die Methoden, teilweise nicht (schlechter Stil). Zudem hast du leere Konstruktore und Desktuktore. Die brauchst du nicht ...
    • DB_Functions ist ebenso unflexibel. Wieso übergibst du das DB_Connect-Objekt nicht dem Konstruktor oder einem Setter? Dann könntest du wenigstens die Datenbankverbindung austauschen (wenn DB_Connect zu verschiedenen Datenbanken verbinden könnten). Mag sein, dass ich das übertrieben kritisere, aber ich mag einfach keinen prozeduralen Quelltext, der in Klassen gepresst wurde. OOP steigert die Codequalität nicht immer ...
    • Du wechselst ständig zwischen Anführungszeichen und Hochkommas für Strings. Schlechter Stil ...
    • Ganz wichtig: Dein Code ist nicht gegen SQL Injections gesichert!
    • Der Stacktrace sollte im Release nicht mehr ausgegeben werden ... (JSON"Parser")
    • DatabaseHandler: Du bezeichnest die Klasse als Paket. Du kennst aber den Unterschied?!
    • Zum Android-Code kann ich nichts sagen, ich programmiere keine Apps ...
    • Wieso bezeichnest du das hier als Tutorial? Du erklärst nur, welcher Quelltext in welche angelegte Datei kopiert werden soll. Ähm ja, wenn man das dann mal auswendig kann ist man ja schon fast ein Guru ...
  • Gebe ich dir in manchen Punkten recht, doch die meisten kennen sich nicht sogut aus wie du und ich, und wissen nicht was eine SQL Injection etc ist. Dies hier dient nur zu lernzwecken und soll keine App für Microsoft werden. Mann kann ja Anfänger nicht direkt mit jedem einzelen Punkt konfrontieren, und ich bin auch nicht in der Lage wie die richtigen Spezialisten alles genaustens zu erklären. Denn auch ich bin kein Profi und muss ab und zu mal nachschlagen in Büchern bzw google.

    Außerdem geht es ja nicht um die PHP Funktion, sondern um die App allgemein, denn dort wird alles durch die sogenannten Injection's mehr oder weniger geschützt. Da man ja schlecht mit einem Android Gerät sich in eine Datenbank hacken kann..

  • Na ja, die Sicherheitslücke besteht im PHP Skript, und das kann auch vom PC aufgerufen werden.

    Es mag richtig sein, dass es für einen Anfänger kaum relevant ist, wie sicher sein Skript ist. Aber sobald er dann an etwas arbeitet, das er veröffentlichen oder online stellen möchte, ist das ein sehr wichtiges Thema. Bei deinem Quelltext kann ein Angreifer so gut wie alles mit deiner Datenbank anstellen. Er kann sich mit jedem beliebigen Account anmelden, sich alle Benutzerdaten anschauen, sie löschen, ... Das ist eine wirklich fatale Sicherheitslücke. Um die Kritik etwas konstruktiver zu machen: Du kannst die Sicherheitslücke schließen, indem du prepared statements von mysqli nutzt oder indem du jede Variable, die du in einem Query verwendest und die Eingaben des Benutzers erhält, mit mysql_real_escape_string() sicherst.

    Zitat

    Gebe ich dir in manchen Punkten recht, doch die meisten kennen sich nicht sogut aus wie du und ich, und wissen nicht was eine SQL Injection etc ist.


    Dann solltest du aber einen Hinweis darauf geben, dass der Quelltext auf keinen Fall so verwendet werden sollte.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!