2016-06-10 5 views
0

Ich versuche, eine einfache Login-Anwendung zu erstellen, die mit MySQL-Datenbank verbindet. Die App funktioniert, wenn ich es in localhost testen, aber wenn ich die Datenbank und die PHP-Skripte auf einen Hosting-Server (Byethost) hochgeladen hat, funktioniert es nicht, das Problem scheint mit der Antwort-Zeichenfolge vom Server, es ist nicht " JSON "Warum kann ich keine Daten von meinem Webserver als JSON abrufen, aber ich kann, wenn ich es auf localhost testen

wie ich oben erwähnt, wenn ich die Anwendung in localhost testen, funktioniert es gut.

hier ist der Andorid-Code
 requestQueue = Volley.newRequestQueue(this); 
    StringRequest stringRequest = new StringRequest(Request.Method.POST, login_url, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      try{ 
       Log.d("#-SERVER RESPONSE-#",response); 
       JSONObject jsonObject = new JSONObject(response); 
       Log.d("#-LOGIN STATUS-#",jsonObject.getString("status")); 
      } catch (Exception e){ 
       Log.d("#-JSON ERROR-#",e.toString()); 
      }//end if 
     } 
    }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Log.d("#-VOLLEY ERROR-#",error.toString()); 
       } 
      }){ 

     @Override 
     public Map<String,String> getParams(){ 
      Map<String,String> params = new HashMap<>(); 
      params.put(KEY_USERNAME,username); 
      params.put(KEY_PASSWORD,password); 
      return params; 
     } 
    }; 
    requestQueue.add(stringRequest); 

Und hier ist der PHP-Code

$username = mysqli_real_escape_string($connection,$_POST['username']); 
$password = mysqli_real_escape_string($connection,$_POST['password']); 

$query = "SELECT * FROM user WHERE username='{$username}' AND password='{$password}'"; 
$result = mysqli_query($connection,$query); 

$json_reply['status'] = 1; //erorr by default 

if(mysqli_num_rows($result) > 0){ 
    $json_reply['status'] = 0; //success 
} 

print(json_encode($json_reply)); 

Hier ist, wie die Ausgabe des Fensters Android-Monitor.

enter image description here

Antwortstring

<html><body><script type="text/javascript" src="/aes.js" ></script><script>function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)e+=(16>d[f]?"0":"")+d[f].toString(16);return e.toLowerCase()}var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("99efa97c59e1cf6146f7e801802ed6bc");document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+"; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/"; document.cookie="referrer="+escape(document.referrer); location.href="http://zsoft.byethost8.com/login.php?ckattempt=1";</script><noscript>This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support</noscript></body></html> 
+0

Zeigen Sie Ihren Code für die Ausführung von Web-Service – Vickyexpert

+0

Können Sie die komplette Antwort-String vom Server buchen? Es sieht wie eine normale HTML Site aus. – Mono

+0

@Mono eigentlich ist es so komisch, ich werde die Frage mit der Antwort-Zeichenfolge aktualisieren –

Antwort

0

Scheint das Problem war mit dem Hosting selbst, versuchte ich ein anderes Hosting (Arvixe) und alles funktioniert als Charme. Ich habe keine Ahnung warum, aber vielleicht weil es ein bezahltes Hosting ist.

+0

Vielleicht ist einige Sicherheitskonfiguration. Auf dem Server lautet Ihre Bestellmethode POST? –

+0

Ja, ich benutze POST-Anfrage, ich versuchte GET auch ich versuchte sogar eine JSON String ohne Hoffnung zu echo –

+0

Ich sehe, Get-Anfrage kann aufgrund spezieller Chatacter in URL blockiert werden, was in einigen Servern blockiert ist, Post nicht haben Problem Ich denke, –

0

hatte ich ein ähnliches Problem vor einer Weile, ich weiß nicht, warum, aber ich in kodieren mit echo json_encode ($ response , JSON_UNESCAPED_UNICODE) ; statt print und entkommen Sonderzeichen zu lösen verwaltet statt mysqli, hoffe es hilft

+0

Ich habe das versucht, aber es funktioniert nicht –

+0

Vielleicht blockiert Apache Sonderzeichen, enthält die Rückkehr irgendwelche?Falls ja, versuchen Sie, die Antwort ohne Sonderzeichen zu testen. –

+0

Ich versuchte das, ich beginne zu glauben, dass es etwas mit dem Content-tpye verwandt ist, versuchte ich Application-JSON, aber es gibt immer wieder Text-html –

0

Viele der kostenlosen Hosting-Provider sind am Ende der Analyse-Code anhängen, das ist der Hauptgrund, warum PHP-Dateien ausfällt.

Die beste Lösung für diese Art von Problem ist

<?php exit(); ?> 

nach der letzten ausführbaren Anweisung zu verwenden, die explizit die PHP-Datei werden geschlossen.

Wenn Sie explizit die PHP-Datei beenden, wird der Code nicht an den JSON angehängt.

+0

Danke für Ihre Antwort, ich würde das versuchen und ich werde Sie wissen lassen, was passiert ist –

+0

Ich habe versucht, Ihre Antwort, aber nichts passiert, das gleiche Problem –

Verwandte Themen