2017-02-11 96 views
1

我是新的Android Studio編程,我試圖將我的應用程序連接到MySQL服務器上的MySQL數據庫,echo "login success !!!!! Welcome $user";正常工作正常,但我希望得到一個PHP變量,如$user也回到我的android studio開發,以便我可以使用它在應用程序中創建會話,但我無法獲取變量 我得到的回聲,我用它在其他地方顯示登錄成功。需要幫助謝謝如何獲得一個PHP變量回到android應用程序?

<?php 
    require "pconn.php"; 
    $username = $_POST["username"]; 
    $password = $_POST["password"]; 

    $username = stripslashes($username); 
    $password = stripslashes($password); 

    $hash = md5($password); 

    $qry = "SELECT * FROM UserLogin WHERE Email='".$username."' and BINARY Password ='".$hash."'"; 
    $result = mysqli_query($conn ,$qry); 
    if(mysqli_num_rows($result) > 0) { 
    $row = mysqli_fetch_assoc($result); 
    $user = $row['Username'] ; 
    echo "login success !!!!! Welcome $user"; 
    echo $user; 
    } 
    else { 
    echo "login not success"; 
    } 


    ?> 

和我的Java類:

protected String doInBackground(String... params) { 
     String type = params[0]; 
     String login_url = "http://xaas.com/login.php"; 
     if(type.equals("login")) { 
      try { 
       String username = params[1]; 
       String password = params[2]; 
       URL url = new URL(login_url); 
       HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection(); 
       httpURLConnection.setRequestMethod("POST"); 
       httpURLConnection.setDoOutput(true); 
       httpURLConnection.setDoInput(true); 
       OutputStream outputStream = httpURLConnection.getOutputStream(); 
       BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8")); 
       String post_data = URLEncoder.encode("username","UTF-8")+"="+URLEncoder.encode(username,"UTF-8")+"&" 
         +URLEncoder.encode("password","UTF-8")+"="+URLEncoder.encode(password,"UTF-8"); 
       bufferedWriter.write(post_data); 
       bufferedWriter.flush(); 
       bufferedWriter.close(); 
       outputStream.close(); 
       InputStream inputStream = httpURLConnection.getInputStream(); 
       BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1")); 
       String result=""; 
       String line=""; 

       while((line = bufferedReader.readLine())!= null) { 
        result += line; 
       } 



       bufferedReader.close(); 
       inputStream.close(); 
       httpURLConnection.disconnect(); 
       return result; 
      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
     return null; 
    } 
+1

'如何獲得一個PHP變量回到android studio?'錯誤的問題。我想你想要在Android設備上運行的客戶端應用程序中接收該變量的值。當您的應用在您的設備或其他人上運行時,它與Android Studio無關。 – greenapps

+0

@greenapps我認爲你的意思是它有**絕對沒有**與Android Studio做。 –

回答

1

使用print顯示任何內容到php控制檯和echo只是一部分,你要發送作爲對Android設備的響應。

或者,如果您還想發送"login success !!!!! Welcome $user"字符串作爲迴應。然後只需在android端獲得$user的價值。

您第一次做echo將作爲回覆發送。如果你想發送多個字符串,然後構建一個JSON,用你想發送的任何東西填充它,並最終回顯它。事情是這樣的:

$data = [ 'loginMessage' => 'login success !!!!! Welcome $user', 'user' => '$user' ]; 
header('Content-type: application/json'); 
echo json_encode($data); 

然後使用JSONObject獲取值回機器人側:

JSONObject responseJSON = new JSONObject(result); 
String loginMessage = responseJSON.getString("loginMessage"); 
String userName = responseJSON.getString("user"); 
+0

我需要這兩個回聲,首先顯示登錄成功的祝酒,另一個將在我的應用程序中進一步使用。 –

+0

我現在正在理解這個邏輯,你能幫我解釋一下如何讓它們回到android端?比如如何區分這些值?謝謝你 –

+0

@YasarKhalid檢查我更新的答案。 –

1

JSON和XML是從Web服務器返回的數據到移動應用兩種常見的方式。

或者,直接在Android EditTexts中輸入用戶名和密碼並將數據發送到PHP腳本。請注意,您使用HTTPS而不是普通的HTTP。

+0

你能解釋一個在Android Studio中獲得'$ user'值的例子嗎? :) –

+0

@YasarKhalid我建議你學習如何在PHP中創建JSON對象。網上已經有很多關於如何做到這一點的例子。 –

1

就像上面所有的答案一樣,你需要將你的php輸出作爲json來回顯。 要做到這一點,你可以試試下面的代碼在你的PHP文件

$result["sessionID"] = $user; 
$result["response_message"] = "Log in success!" 
echo json_encode($result); 

現在你必須分析你的OutputStream的結果,要做到這一點,你可以嘗試在你的Android類的跟隨着代碼

JSONObject jsonobj = new JSONObject([your variables that holds the result from output stream]); 
String sessionID = jsonobj.getString("sessionID"); 
String response_message = jsonobj.getString("response_message"); 

請注意,你傳遞給jsonobj.getString(「會話ID‘)的參數應該是一樣的,你傳遞的參數在聲明中php文件的變量$迴應[’會話ID」。

我也建議你熟悉一下JSON語法。