http_post_string senden und auslesen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • http_post_string senden und auslesen

    Hallo zusammen, ich habe ein Problem mit den empfangen.
    Ich sende ein paar Daten an ein PHP File. Diese schreibt dann die Daten in eine Datenbank und gibt ein "OK" zurück.
    Nun will ich den zurück gesendeten Text kontrollieren um dann im Spiel weiter zu verfahren.
    Mit show_debug_message kann ich den Text auslesen.
    Jedoch kann ich es nicht kontrollieren.
    Ich gebe den Text auch mit Draw aus. Komischerweise musste ich den Text erst in die Variable status_ausgabe speichern damit er per draw ausgegeben wird.
    Ich hatte auch mal string_lenght(status_ausgabe) probiert. Aber dann kan nur ein fatal error.
    Ich bin mit meinen Latein am ende. Ich hoffe ihr könnt mir helfen.

    GML-Quellcode

    1. if ds_map_find_value(async_load, "id") == post_name{
    2. if ds_map_find_value(async_load, "status") == 0{
    3. r_str = ds_map_find_value(async_load, "result");
    4. }
    5. }
    6. if (r_str != "null"){
    7. show_debug_message("" + r_str);
    8. status_ausgabe = r_str;
    9. };
    10. if (status_ausgabe == "Eingetragen"){
    11. instance_deactivate_object(obj_a);
    12. }
    Alles anzeigen


    PHP-Quellcode

    1. <?php
    2. $username = $_POST[fname];
    3. //Prüfen ob Felder leer sind
    4. if (empty($username)) {
    5. echo 'Usernamen ist leer';
    6. die();
    7. }
    8. //Länger des Usernamens prüfen
    9. if(strlen($username) < 3) {
    10. echo 'Der Username ist zu kurz';
    11. die();
    12. }
    13. if(strlen($username) > 20) {
    14. echo 'Der Username ist zu lang';
    15. die();
    16. }
    17. require ("config.inc.php");
    18. //Username abfragen
    19. $userabfrage = "SELECT * FROM ".$dbtab." WHERE name = '$username'";
    20. $abfrageergebnis = mysql_query($userabfrage);
    21. $abfrageausgabe = mysql_fetch_object($abfrageergebnis);
    22. $userpruefen = $abfrageausgabe->name;
    23. //Ist Username schon vorhanden?
    24. if ($userpruefen == $username){
    25. echo 'Der Username ist vergeben';
    26. die();
    27. }
    28. //SQL Sicherheit
    29. $user = mysql_real_escape_string($username);
    30. //Daten in Datenbank schreiben
    31. $usereintrag = "INSERT INTO $dbtab
    32. (name, punkte, zeit, geld)
    33. VALUES
    34. ('$username', '','','')";
    35. $usereintrag = mysql_query($usereintrag);
    36. //Prüfen ob Daten geschrieben wurden
    37. if($usereintrag == true){
    38. echo 'Eingetragen';
    39. }else{
    40. echo 'Error';
    41. }
    42. ?>
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von maclor ()

  • Es ist eben so das die Box zum Namen eintragen dann verschwinden soll.
    Dafür ist das da.

    GML-Quellcode

    1. if (status_ausgabe == "Eingetragen"){
    2. instance_deactivate_object(obj_a);
    3. }

    Sicher könnte man ein extra Script machen das Kontrolliert ob der Name nun drin ist. Aber das halte ich nicht für das Gelbe im Ei.
    Wer weis auch ob ich die Daten dann kontrollieren kann.
  • Hab paar Fragen :D
    Kommt ein Fehler, wenn du versuchst r_str zu drawen? Wenn ja, welcher. Wenn nein, wird nichts gedrawt?
    Was für ein Fehler kommt, wenn du string_length(status_ausgabe) machst? Wahrscheinlich kennt er die Variable noch nicht.

    Es ist oftmals so, dass hinten dran noch ein Enter dran ist. Das ist als Asciicode 13. string_replace_all(r_str, chr(13), "") sollte da Abhilfe schaffen.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Es ist so das nichts kommt wenn ich versuche zu drawen.

    Der Fehler wenn ich string_lenght versuche.

    Quellcode

    1. ERROR!!! :: ############################################################################################
    2. FATAL ERROR in
    3. action number 1
    4. of Async Event: HTTP
    5. for object obj_enter_username:
    6. DoAdd :: Execution Error
    7. at gml_Object_obj_enter_username_WebAsyncEvent_1 (line 10) - show_debug_message("Länge" + string_length(status_ausgabe) + "");
    8. ############################################################################################


    Das mit den Enter kann gut sein. Das ist mir bei der Debug Ausgabe aufgefallen das immer ne Zeile extra ist.
    Das versuche ich mal.

    Update:
    Hat leider keinen Effekt oO

    GML-Quellcode

    1. if ds_map_find_value(async_load, "id") == post_name{
    2. if ds_map_find_value(async_load, "status") == 0{
    3. r_str = string(ds_map_find_value(async_load, "result"));
    4. r_str = string_replace_all(r_str, chr(13), "")
    5. if (r_str != "null"){
    6. show_debug_message("" + r_str);
    7. status_ausgabe = r_str;
    8. };
    9. if (status_ausgabe == "Eingetragen"){
    10. instance_deactivate_object(obj_a);
    11. }
    12. }
    13. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von maclor ()

  • Was kommt denn, wenn du versuchst zu drawen?

    Der Fehler bezieht sich darauf, dass du einen String/Text/Zeichenkette nicht mit einer Zahl verbinden kannst. Das hier würde auch nicht gehen: "Score: "+5. Du musst die Zahl erst in einen String umwandeln: "Score: "+string(5);

    Jup dann liegts am Enter.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Wo kommt denn das enter her?
    Das kommt im Debugger wenn ich es zweimal versucht habe. Es ist als wäre erst ein Leerzeichen und dann ein enter.

    Brainfuck-Quellcode

    1. Entering main loop.
    2. **********************************.
    3. Eingetragen
    4. Eingetragen
    5. ---------------------------------------------------------------
    6. minFPS, maxFPS, avgFPS
    7. 31, 1831, 1493
    8. ---------------------------------------------------------------
    9. Compile finished: 14:15:41
    Alles anzeigen


    Kann man da nicht was in der PHP Datei machen damit das richtig ankommt?
  • Kann ich dir so nicht sagen. Aber das Enter kannst du ja einfach wegbekommen und dann müsste es laufen ;)
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Bin jetzt soweit das ich es so probiert habe.
    Es bleibt alles beim alten....ich werd noch narrisch mit dem zeug hier :headtouch:

    GML-Quellcode

    1. var r_str = "null";
    2. if ds_map_find_value(async_load, "id") == post_name{
    3. if ds_map_find_value(async_load, "status") == 0{
    4. r_str = string(ds_map_find_value(async_load, "result"));
    5. if (r_str != "null"){
    6. status_ausgabe = r_str;
    7. }
    8. status_ausgabe = string_replace_all(status_ausgabe, chr(13), "")
    9. show_debug_message("" + status_ausgabe);
    10. if (status_ausgabe == "Eingetragen"){
    11. instance_deactivate_object(obj_a);
    12. }
    13. }
    14. }
    Alles anzeigen
  • Keine Ahnung, ob da vielleicht noch andere Zeichen hinter sind. Kannst ja mal testweise ausgeben lassen:

    GML-Quellcode

    1. show_debug_message("last char: "+string_ord_at(status_ausgabe, string_length(status_ausgabe)));

    Gleiche das dann hier einfach ab: ascii.cl/. Wenn da sowas wie ein Leerzeichen (Ascii: 32) rauskommt, kannst du das auch entfernen.

    Andererseits kannst du auch einfach über string_copy alle Zeichen dahinter einfach entfernen ohne, dass du weißt, welche das sind.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Also mit string_copy hats jetzt soweit geklappt. Zwar nicht die schönste Lösung aber man kann damit arbeiten.
    Dein Beispiel kann leider nicht gehen weil ja string_length nicht funktioniert. :wacko:
    Ich danke dir sehr für deine Vorschläge! :rolleyes:
    Jetzt kann ich da weiter machen. Trotzdem will ich das noch weiter verfolgen woran das liegt das die Zeichen am schluss sind.

    GML-Quellcode

    1. var r_str = "null";
    2. if ds_map_find_value(async_load, "id") == post_name{
    3. if ds_map_find_value(async_load, "status") == 0{
    4. r_str = ds_map_find_value(async_load, "result");
    5. status_ausgabe = r_str;
    6. status_ausgabe = string_copy(status_ausgabe, 1, 11);
    7. show_debug_message("" + status_ausgabe);
    8. if (status_ausgabe == "Eingetragen"){
    9. instance_deactivate_object(obj_a);
    10. }
    11. }
    12. }
    Alles anzeigen