2017-02-11 19 views
1

私はAndroidスタジオのプログラミングには新しく、アプリケーションをMySQLデータベースのWebサーバーに接続しようとしていますが、echo "login success !!!!! Welcome $user";はうまく機能していますが、$userのようなPHP変数も取得したいアンドロイドスタジオの開発は、私はアプリケーションでセッションを作るために使用することができますが、私は変数を取得することができません 私はエコーを取得していると私は別の場所にログインの成功を表示するようにそれを使用しています。PHP変数をアンドロイドアプリに戻すにはどうすればいいですか?

<?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デバイス上で実行されるあなたのクライアントAppでその変数の値を受け取りたいと思います。あなたのアプリがあなたのデバイスや他の誰かの上で動作するとき、それはAndroid Studioとほとんど関係がありません。 – greenapps

+0

@greenapps Android Studioとはまったく関係ない**と思っています。 –

答えて

1

使用printあなたはAndroidデバイスへの応答として送信したい部分だけphpコンソールとechoには何も表示します。

また、応答として"login success !!!!! Welcome $user"文字列を送信したい場合は、そして、アンドロイド側で単に$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

私は両方のエコーを必要とします。最初はログイン成功のトーストを表示し、もう1つは自分のアプリケーションでさらに使用する必要があります。 –

+0

私は今、論理を理解しています、あなたはアンドロイド側に戻す方法で私を助けてくださいできますか?どのように値を区別するように?ありがとうございました –

+0

@ YasarKhalid私の更新された答えを確認してください。 –

1

JSONとXMLは、モバイルアプリにウェブサーバからデータを返すために、両方の一般的な方法です。

また、Android EditTextsに直接ユーザー名とパスワードを入力し、そのデータをPHPスクリプトに送信します。単純なHTTPではなくHTTPSを使用するように注意してください。

+0

あなたはAndroidスタジオで '$ user'値を取得する例を教えてください? :) –

+0

@ YasarKhalid PHPでJSONオブジェクトを作成する方法を学ぶことをお勧めします。これを行う方法については、すでにオンラインで多くの例があります。 –

1

上記のすべての答えと同様に、PHP出力をjsonとしてエコーする必要があります。 これを実現するために、あなたは

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

は今、あなたはあなたのOutputStreamの結果を解析する必要があなたのphpファイルに次のコードを試すことができ、これを行うには、あなたのアンドロイドクラスでfollowinコードを試すことができます

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"); 
あなたは、PHPファイルでの変数$応答[「 セッションIDを 『]宣言するときにjsonobj.getString(』 セッションID」)に渡されたパラメータを使用すると、渡されたパラメータと同じでなければならないことに注意してください。

また、JSONの構文を理解することをお勧めします。

関連する問題