kostenloser Webspace werbefrei: lima-city


Mein Programmierprojekt

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    darvin

    darvin hat kostenlosen Webspace.

    Hallo Community,
    ich wende mich an euch, weil ich ein Projekt starten will.
    Habe den Thread mal unter Sonstige Programmiersprachen gesetzt, da ich noch keinen blassen Schimmer habe, wie ich das Umsetze.

    Ich Beschreibe hier Mal den Weg der Daten von dem Projekt: Daten werden abgeschickt -> Vom Server (Raspberry Pi) empfangen und verarbeitet -> Verarbeitete Daten werden zurückgeschickt.

    Hier Mal ein Beispiel: Daten "Hallo ich bin Darvin" an Server schicken -> Empfangen und übersetzen -> Hello Iam Darvin zurück zum Sender schicken.

    Das Gerät, auf welchem die Daten empfangen werden sollen, sollte wenn möglich eine Website sein.
    (Eingabefeld & Ausgabefeld)

    Der Server (Raspberry Pi) ist der "Rechner bzw im Beispiel der Übersetzer und die Datenbank. Die Datenbank Stelle ich mir erstmal als einfaches Tabellendokument vor.

    Ich habe bereits ein wenig Programmiererfahrung und ein bisschen Erfahrung mit Servern, weshalb ich dieses Projekt starte, um mehr Erfahrung zu sammeln. (z.B Java, HTML, Php und Python ist mir ein wenig vertraut, abee habe in allem nur Mal "reingeschnuppert")

    Meine 3 Problemzonen, welche ich nicht zu Lösen weiß:
    1. Mit einer Website Daten absenden und empfangen (Von/Zu einem Server(Raspberry)
    2. Programm auf Raspberry um Daten ebenfalls zu empfangen/abzusenden
    3. Auswertung der Daten aus der Datenbank

    Falls ihr wissen möchtet, was der Server macht, hier eine kurze Erklärung.
    Er übersetzt Wörter mithilfe der Datenbank. Klar, die Datenbank ist nicht vollständig, ich könnte keine gute Grammatik einbauen, etc. Aber es dient nur dem Projekt und keinem Nutzen!

    Habt ihr gute Lösungsansätze/Vorschläge?
    MfG
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. h***********r

    Da gibt es viele Varianten um das zu lösen was du gern machen würdest:

    1) und 2)

    Wie stellst du dir das vor vom System her? Die Website bei Lima und die Daten bei dir? Beides bei dir halt mit Apache bzw Nginx auf dem RPi?

    Letztendlich ist der Unterschied nahezu egal in der Umsetzung, es funktioniert recht ähnlich:
    Html Formular wird per POST gesendet --> Triggert nen PhP Code der das macht was du willst und gibt dir die Werte mit.
    Dafür könnte man beides auf dem Webserver bei Lima betreiben. Das getrennt zu legen ist etwas schwieriger da du den Traffic zwischen dem RPi und dem Webserver absichern müsstest.

    Man kann sicherlich auch mit Python lösen oder ganz anderen Sprachen, aber php passt halt am besten.

    3)

    Das hier wird schon etwas schwieriger. Wenn du Wort für Wort übersetzen willst solltest du den String der Eingabe in ein Array aufteilen mit je 1 Wort pro Array. Dann musst du halt jeden Wert einzeln mit der kompletten Datenbank abgleichen. (Achte bei der Abfrage gleich darauf Prepared Statements zu verwenden. Ist für den Anfang nicht so schön an zu sehen, aber ist deutlich sicherer).
    Das das ganze eine Effizienz nahe 0 haben wir brauche ich wohl nicht zu erwähnen. Selbst wenn du nur knapp 1000 Einträge in dieser Datenbank hast, werden bei einem Satz wie "Das das ganze eine Effizienz nahe 0 haben wir brauche ich wohl nicht zu erwähnen" 15000 Datensätze durchsucht. Das dauert zwar keine Ewigkeiten, ist aber bei ganzen Texten eine Katastrophe. Eventuell wäre es für den Fall besser die Übersetzung mithilfe der https://cloud.google.com/translate/docs/?hl=de o.ä. zu erledigen. Da das aber sicher 'zum Probieren' sein soll kann man darauf sicher verzichten.

    Man könnte auch sich ein relativ einfaches Eingabe-Analyse Tool zusammenbapsen wobei man aus zusammenhängen innerhalb des Eingabestrings die richtige Formulierung bzw das passende Wort findet. Das würde es aber vermutlich zu komplex machen.


    Codeschnipsel reiche ich gern ein falls es wo klemmt.

    Beitrag zuletzt geändert: 16.3.2018 0:00:55 von horstexplorer
  4. Autor dieses Themas

    darvin

    darvin hat kostenlosen Webspace.

    Hi!
    Danke für deine tolle Hilfe ;)
    Ich fange erstmal damit an, dass die abgesendeten Daten angezeigt werden. Habe dazu diesen Code in Darvins-Projekt.php geschrieben:
    <!doctype html>
    
    <html lang="de">
    <head>
      <meta charset="utf-8">
      <title>Darvins Projekt</title>
      <meta name="description" content="Test-Projekt">
      <meta name="author" content="Darvin">
    </head>
    
    <body>
      <form action="" method="post">
    	<p>Eingabetext: <input type="text" name="eingabetext"><br></p>
    	<input type="submit" value="Absenden">
      </form>
      
      Eingereichte Daten:
      <?php
    	echo htmlspecialchars($_POST['eingabetext']);
      ?>
    </body>
    </html>


    Leider zeigt er nicht an, welche Daten eingereicht wurden.
  5. h***********r

    In dem Fall müsstest du die eine Zeile in action="Darvins-Projekt.php" abwandeln. Der PhP Code wird vor dem anzeigen der Seite geladen.
    Wenn du das später an ein anderes Script per include ein hängst ist dort ein # o.ä anzugeben


    Bei mir scheint dieser Code zu funktionieren

    Beitrag zuletzt geändert: 16.3.2018 15:05:41 von horstexplorer
  6. Autor dieses Themas

    darvin

    darvin hat kostenlosen Webspace.

    Hallo. Danke für deine Antwort. Habe es jetzt mal auf meiner Website getestet (https://darvin.lima-city.de/Darvins-Projekt) und es Funktioniert!
    Lag wohl daran, dass mein Browser Php nicht verarbeitet etc.

    Ich antworte jetzt mal auf deine vorherigen Fragen:
    Ob die Website hier bei lima, anderen hostern oder per Apache oder Nginx auf dem Raspberry läuft, ist mir eigentlich egal.
    Wichtig für mein Projekt ist, dass die Datei(Das Programm), welches die Daten auswertet und neue zurückschickt, geeschützt ist und niemand den Code davon entnehmen kann.

    Wie genau muss ich jetzt vorgehen, um diese Daten zu verarbeiten?
  7. h***********r

    An sich wird PhP nur Serverseitig aus geführt. Somit wird der Code auch nicht an die Clients gesendet und ist somit relativ sicher.

    An sich könnte man das so machen, dass du dein Formular hast wo du deine Script.php einbindest. Das ist die einfachste Variante welche aber nicht so ganz toll ist:
    <form action="#" method="post">
    	<p>Eingabetext: <input type="text" name="eingabetext"><br></p>
    	<input type="submit" value="Absenden">
    	<?php include 'Script.php'; ?>
     </form>


    Damit Script.php nun nicht direkt ausgeführt wird, warten wir auch das setzen von Submit beim reload der Seite:
    Der Code dazu sieht ungefähr so aus:
    <?php
    if (isset($_POST['submit'])) {
    start();
    }
    
    function start(){
    //Dein Code hier
    }


    Beitrag zuletzt geändert: 16.3.2018 15:18:11 von horstexplorer
  8. Autor dieses Themas

    darvin

    darvin hat kostenlosen Webspace.

    Also, ich habe jetzt zwei Dateien:
    Index.php
    Script.php
    Laut deiner Variante ist der "Übersetzer" direkt in dann in Script.php, richtig?
    Was ich genau vorhabe, ist, dass index.php Daten an Action.php sendet und index.php diese empfängt.

    Die erste Variante klingt für mich schonmal sehr gut, da ich den "Übersetzer" nicht in der Datei eingebunden habe.
    Die zweite Variante habe ich noch nicht ganz verstanden. Sobald man auf submit drückt, wird die Methode(Funktion) start ausgeführt. Was ich noch nicht verstehe, ist, in welcher datei dein zweites Beispiel ist und wie genau die If-Abfrage aufgerufen wird.

    Ps: Ist das so okey, wenn man schauen will, ob eine Variable keinen Wert hat?
    $eingabetext = $_POST["eingabetext"];
            if ($eingabetext != "") {
                echo "Eingereichte Daten:";
                echo $eingabetext;
            } else {
                echo "Noch keine Daten eingereicht.";
            }


    Edit: Und wie löse ich das, wenn ich (Mal angenommen) Die Website bei Lima hoste aber den Raspberry Pi als Server nutze? Falls man dafür auch Apache etc aufsetzen muss, ändere ich mein projekt so um, dass einfach eine andere php Datei (In dem Fall dann Script.php) das "Übersetzen" übernimmt.


    Beitrag zuletzt geändert: 16.3.2018 15:35:53 von darvin
  9. h***********r

    Das gehört alles zusammen. Ob es nun Script oder action.php heißt kannst du ja ändern. Es geht dann nur um den Inhalt dieser Dateien, da der PhP Code sonnst ausgeführt wird, obwohl noch gar keine Eingabe vorhanden ist.
    Das schauen ob sie gesetzt ist geht etwas kompakter:
    if (isset($_POST["eingabetext"])){
    //Ja
    }else{
    //Nein
    }


    Wenn du den Übersetzer auf deinem RPi laufen lassen möchtest funktioniert das ganze anders und ist aufwändiger. Da müsstest auf dem RPi apache2, php und mysql(mariadb) aufsetzen, im Router Port 443 an den RPi leiten. Dann müsstest du per dns cname eine Subdomain auf deine IP bzw deinen ddns Host legen hinter dem deine IP deines Routers ist. Dann müsstest du mit Certbot Zertifikate anfordern für ssl. Zudem musst du in dein Script nun eine Authentifizierung zur Sicherheit Einbauen, da du nicht mehr Post sondern Get verwenden wirsts was natürlich auch Änderungen an deinem Formular benötigt bzw einen zusätzlichen Zwischenschritt benötigt.
    Das geht auch über Port 80 ohne Zertifikate, aber das ist unsicher.

    Es ist eigentlich zu empfehlen beides an einem Ort zu haben.

    Beitrag zuletzt geändert: 16.3.2018 15:48:56 von horstexplorer
  10. Autor dieses Themas

    darvin

    darvin hat kostenlosen Webspace.

    Deine Erklärung mit dem Raspi ist sehr geil, aber ich blicke da nicht richtig durch ^^ Man muss doch sehr viel machen, da ist es leicher, alles an einem Ort zu haben.
    Ich belasse das Projekt jetzt weiterhin nur auf lima city in einem Unterordner auf meiner Website.

    darvin schrieb:
    Was ich genau vorhabe, ist, dass index.php Daten an Action.php sendet und index.php diese empfängt.
    Ups, meinte Script.php. Aber das ist ja wirklich egal, wie du bereits gesagt hast.

    Zu der Vereinfachung von deiner Abfrage: Es wird auch als true beantwortet, wenn man auf Absenden drückt und keine Daten drin sind. Oder ich habe etwas falsch gemacht, hm. Ist auch nicht sonderlich wichtig.

    Ich habe allerdings deine Variante nicht ganz verstanden, wie man Script.php mit einbezieht.
    Ist
    <?php
    if (isset($_POST['submit'])) {
    start();
    }

    und
    function start(){
    //Dein Code hier
    }

    in der gleichen Datei? Wenn ja, in welcher?
  11. h***********r

    Eventuell habe ich beim ersten einen Fehler drinnen ich kucke da nochmal. Diese beiden Codeteile kommen in die gleiche PhP Datei. Der erste Teil überprüft ob das Formular abgesendet wurde und wenn ja, dann startet es den Code in Funktion start()

    Dort hohlst du dann zunächst deine Post[]s ab um dann mit ihnen weiter zu hantieren.
  12. Autor dieses Themas

    darvin

    darvin hat kostenlosen Webspace.

    Was muss dann im Formular bei Action="" eingetragen werden?
    Und wie sende ich Daten von Script.php an index.php zurück?
  13. h***********r

    Bei action kann man einen # einsetzen. Das sollte einen an die Seite.php# weiterleiten.
    Zurück senden brauchst du nichts, da durch include das script direkt im selben Dokument liegt. Also die Ausgabe ist direkt in dem Dokument möglich mit echo etc.
  14. Autor dieses Themas

    darvin

    darvin hat kostenlosen Webspace.

    Wenn ich richtig verstanden habe, werden die Dateien miteinader "verschmolzen", was dann bedeutet, dass dann auch variablen etc von beiden scripten abgerufen werden.
    Vielen Dank!
    Melde mich später, wenn ich es geschafft habe ;)

    PS: Aber kann dann wirklich niemand den inhalt von script.php auslesen?

    Edit:
    Hier mal der Code von Script.php:
    <?php
        if (isset($_POST['submit'])) {
            start();
        }
    ?>

    Und hier von index.php:
    <!doctype html>
    
    <html lang="de">
    <head>
      <meta charset="utf-8">
      <title>Darvins Projekt</title>
      <meta name="description" content="Test-Projekt">
      <meta name="author" content="Darvin">
    </head>
    
    <body>
      <form action="" method="post">
    	<p>Eingabetext: <input type="text" name="eingabetext"><br></p>
    	<input type="submit" value="Absenden">
      </form>
      
      <?php
            $eingabetext = $_POST["eingabetext"];
            if ($eingabetext != "") {
                echo "Eingereichte Daten:";
                echo $eingabetext;
            } else {
                echo "Noch keine Daten eingereicht.";
            }
    
    function start(){
        echo "lol.";
    }
      ?>
    </body>
    </html>

    Wenn ich es richtig verstanden habe, müsste nach dem klicken auf den Button doch eigentlich da "lol" stehen, was es allerdings nicht tut. Habe ich etwas falsch gemacht?


    Beitrag zuletzt geändert: 16.3.2018 16:49:50 von darvin
  15. h***********r

    Der Code der in der index.php steht muss in die script.php in die start funktion rein

    Beitrag zuletzt geändert: 16.3.2018 16:57:32 von horstexplorer
  16. Autor dieses Themas

    darvin

    darvin hat kostenlosen Webspace.

    Geht es so denn garnicht?
    Denn wenn die Funktion in die Script.php verschiebe, kann ich mir ja nichts mehr in der index.php anzeigen lassen
  17. h***********r

    Doch genau dafür laden wir die script Datei ja mit include in die index.php
  18. Autor dieses Themas

    darvin

    darvin hat kostenlosen Webspace.

    Wird der text von dem echo dann an der stelle angezeigt, in welcher "include" steht?
  19. h***********r

    Von dort an nach unten, ja
  20. Autor dieses Themas

    darvin

    darvin hat kostenlosen Webspace.

    Achso :) Es funktioniert leider immer noch nicht.

    Index.php:
    <!doctype html>
    
    <html lang="de">
    <head>
      <meta charset="utf-8">
      <title>Darvins Projekt</title>
      <meta name="description" content="Test-Projekt">
      <meta name="author" content="Darvin">
    </head>
    
    <body>
      <form action="" method="post">
    	<p>Eingabetext: <input type="text" name="eingabetext"><br></p>
    	<input type="submit" value="Absenden" name="submitbutton">
      </form>
      
      <?php
            $eingabetext = $_POST["eingabetext"];
            if ($eingabetext != "") {
                echo "Eingereichte Daten:";
                echo $eingabetext;
            } else {
                echo "Noch keine Daten eingereicht.";
            }
    
      ?>
    </body>
    </html>

    Script.php:
    <?php
        if (isset($_POST['submit'])) {
            start();
        }
     
        function start(){
            echo "HAHAH";
        }
    ?>


    Was habe ich falsch gemacht? Bin langsam am verzweifeln :/
  21. h***********r

    Du hast die Script Datei ja auch nicht innerhalb des Formulars included.
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!