2017-02-11 13 views
1

Android Studio에서 프로그래밍을 처음 접했을 때 웹 서버의 MySQL 데이터베이스에 응용 프로그램을 연결하려고합니다. echo "login success !!!!! Welcome $user";은 원하는대로 올바르게 작동하지만 PHP 변수 인 $user도 얻고 싶습니다. 안드로이드 스튜디오 개발 그래서 내가 응용 프로그램에서 세션을 만드는 데 사용할 수 있지만 변수를 얻을 수 없습니다. 나는 반향을 받고 오전 어딘가에 다른 로그인의 성공을 표시하는 데 사용하고 있습니다. 도움이 필요하면PHP 변수를 다시 android app으로 가져 오는 방법은 무엇입니까?

<?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"; 
    } 


    ?> 

을 감사하고 내 자바 클래스는 다음과 같습니다

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 안드로이드 스튜디오와 아무런 관련이 없다는 것을 의미한다고 생각합니다. –

답변

1

사용 print을 당신은 안드로이드 장치에 대한 응답으로 보낼 php 콘솔과 echo 단지 부분에 아무것도 표시.

또는 "login success !!!!! Welcome $user" 문자열을 응답으로 보내려는 경우. 그런 다음 안드로이드 측에서 간단히 $user 값을 얻으십시오.

처음으로 응답으로 보낼 echo을 할 때. 여러개의 문자열을 보내고 json을 만들고 싶다면, 보내고 자하는 것을 무엇이든 채우고 마지막으로 echo합니다.

$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

나는 지금 논리를 이해하고있다, 당신은 안드로이드 측면에서 그들을 되 찾는 방법에 나를 도울 수 있습니까? 값을 어떻게 구별 할 수 있을까요?고마워요 톤 –

+0

@ YasarKhalid 내 대답을 확인하십시오. –

1

JSON과 XML은 모바일 앱에 웹 서버에서 데이터를 반환하는 두 일반적인 방법입니다.

또는 Android EditTexts에 직접 사용자 이름과 비밀번호를 입력하고 데이터를 PHP 스크립트로 전송하십시오. 일반 HTTP가 아닌 HTTPS를 사용하도록주의하십시오.

+0

안드로이드 스튜디오에서'$ user' 값을 얻는 한 가지 예를 설명해주십시오 ? :) –

+0

@ YasarKhalid PHP에서 JSON 객체를 만드는 방법을 배우는 것이 좋습니다. 이 작업을 수행하는 방법에 대한 온라인 예제가 이미 많이 있습니다. –

1

위의 모든 대답과 마찬가지로 PHP 출력을 json으로 표시해야합니다. 이를 위해, 당신은

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

지금 당신은 당신의 OutputStream의 결과를 분석 할 필요가 당신의 PHP 파일에 다음 코드를 시도 할 수 있습니다,이 작업을 수행하기 위해, 당신은 당신의 안드로이드 클래스의 따라와 코드를 시도 할 수 있습니다

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 파일에 변수 $ 응답 [ " sessionID와을"] 선언 할 때 jsonobj.getString (" sessionID와")에 전달 된 매개 변수는 전달 된 매개 변수와 동일해야 있습니다.

JSON 구문을 익히는 것이 좋습니다.

관련 문제