Nyral Geschrieben 10. November 2015 Melden Share Geschrieben 10. November 2015 Hallo, hoffe ihr könnt mir bei meinem Problem helfen. Bin gerade dabei ein kleines Android Spiel zu entwickeln. Das Spiel beinhaltet auch einen online Highscore. Im großen und ganzen läuft alles schon so wie es soll. Zumindest wenn ich es am PC oder Handy im eigenen W-Lan teste. Hier funktioniert der Upload und Download des Highscores einwandfrei. Wenn ich jetzt aber versuche einen neuen Highscore über das Handynetz auf meinen vServer hochzuladen bekomme ich immer den Fehler: Java.io.EOF Exception. Das Herunterladen des Highscores funktioniert dabei einwandfrei. Habe leider keine Ahnung woran das liegen könnte, da es ja über W-Lan funktioniert. Als Datenbank verwende ich MySQL die auf meinem vServer läuft. Habe mich nach diesem Tutorial für den online Highscore gehalten: Server side Highscore Mein php-file das dass eintragen in die Datenbank übernimmt: <?php $isDebug = 0; // 1 = Debug output is on; 0 = Debug output is off $db = mysql_connect('host', 'database', 'pw') or die ('Could not connect: ' . mysql_error()); mysql_select_db('table') or die ('Could not select database'); $name = mysql_real_escape_string($_GET['name'], $db); $score = mysql_real_escape_string($_GET['score'], $db); $hash = $_GET['hash']; $secretKey = "secret"; $real_hash = md5($name . $score . $secretKey); if($real_hash == $hash) { $query = "insert into table values (null, '$name', '$score');"; $result = mysql_query($query) or die ('Query failed: ' . mysql_error()); if($isDebug == 1) echo "Insert user score is done."; } if($isDebug == 1) echo "Ende set user score script"; ?> Und hier die Upload Methode in Unity: IEnumerator SetScore(string _name, int _score, string _setScorePhpURL) { //Set the upload flag hsCurrentHighscoreConnection = HIGHSCORECONNECTION.HC_UPLOADINGSCORE; //Create the hash string strHash = MD5Sum(_name + _score + strSecretKey); //Create the url string strSetScoreURL = _setScorePhpURL + "name=" + WWW.EscapeURL(_name) + "&score=" + _score + "&hash=" + strHash; WWW wwwHighscoreServer = new WWW(strSetScoreURL); //Set the score yield return wwwHighscoreServer; //Check the score upload if (wwwHighscoreServer.error != null) { hsCurrentHighscoreConnection = HIGHSCORECONNECTION.HC_ERROR; Debug.LogError("Upload highscore error: " + wwwHighscoreServer.error); } else { //Set upload is done flag hsCurrentHighscoreConnection = HIGHSCORECONNECTION.HC_UPLOADISDONE; } } Schon mal danke im voraus für eure Hilfe. MFG Nyral Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mark Geschrieben 10. November 2015 Melden Share Geschrieben 10. November 2015 Wo genau läuft denn der Server von dir? Und du solltest noch etwas über Bobby Tables lernen: https://xkcd.com/327/ Dein Code ist anfällig dafür. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Nyral Geschrieben 10. November 2015 Autor Melden Share Geschrieben 10. November 2015 Der vServer ist bei 1Blu gehostet oder was meinst du mit wo genau? Wie könnte ich das eintragen von Daten in die Datenbank sicherer machen? Könntest du mir da bitte ein Stichwort bzw. ein Beispiel geben, damit ich mir das mal anschauen kann. MFG Nyral Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mark Geschrieben 10. November 2015 Melden Share Geschrieben 10. November 2015 Naja du schreibst was von im WLAN geht aber ausserhalb nichts, das klang so als ob dein Server lokal gehostet wird. Zum Thema SQL Commandos absichern: Stichwort: SQL Injection http://php.net/manual/de/security.database.sql-injection.php Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Nyral Geschrieben 10. November 2015 Autor Melden Share Geschrieben 10. November 2015 Danke für den link werde es mir mal anschauen. Das ist ja das komische das es funktioniert wenn ich mit dem Handy per W-Lan am Router angemeldet bin. Es aber nicht mehr geht wenn ich über das Handynetz mich verbinde. MFG Nyral Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Nyral Geschrieben 14. November 2015 Autor Melden Share Geschrieben 14. November 2015 Keiner eine Idee woran das liegen könnte? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Nyral Geschrieben 23. November 2015 Autor Melden Share Geschrieben 23. November 2015 Sry für den weiteren Doppelpost aber das Thema kann nun geschlossen werden. Habe das Problem nun gelöst. Habe für den Upload des Scores die Hilfsklasse "WWWForm" von Unity verwendet die die Datenübertragung zu einem Server managed. So sieht nun das überarbeitete Unity script aus: IEnumerator SetScore(string _name, int _score, string _setScorePhpURL) { //Set the upload flag hsCurrentHighscoreConnection = HIGHSCORECONNECTION.HC_UPLOADINGSCORE; //Create the hash string strHash = MD5Sum(_name + _score + strSecretKey); //Helper class upload to server WWWForm wwwForm = new WWWForm(); wwwForm.AddField("name", _name); wwwForm.AddField("score", _score); wwwForm.AddField("hash", strHash); WWW wwwHighscoreServer = new WWW(strSetScoreURL, wwwForm); //Set the score yield return wwwHighscoreServer; //Check the score upload if (wwwHighscoreServer.error != null) { hsCurrentHighscoreConnection = HIGHSCORECONNECTION.HC_ERROR; Debug.LogError("Upload highscore error: " + wwwHighscoreServer.error); } else { //Set upload is done flag hsCurrentHighscoreConnection = HIGHSCORECONNECTION.HC_UPLOADISDONE; wwwHighscoreServer.Dispose(); } } Das php file habe ich wie folgt angepasst: <?php $isDebug = 0; // 1 = Debug output is on; 0 = Debug output is off $db = mysql_connect('host', 'database', 'pw') or die ('Could not connect: ' . mysql_error()); mysql_select_db('table') or die ('Could not select database'); $name = mysql_real_escape_string($_POST['name'], $db); $score = mysql_real_escape_string($_POST['score'], $db); $hash = $_GET['hash']; $secretKey = "secret"; $real_hash = md5($name . $score . $secretKey); if($real_hash == $hash) { $query = "insert into table values (null, '$name', '$score');"; $result = mysql_query($query) or die ('Query failed: ' . mysql_error()); if($isDebug == 1) echo "Insert user score is done."; } if($isDebug == 1) echo "Ende set user score script"; ?> So funktioniert der Score upload sowohl daheim im W-Lan sowie mit dem Handynetz. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.