0

以下のこの PHP ファイルにデータを送信するにはどうすればよいですか? 接続を確立してデータを送信できますが、応答を受信できません。「op」、ユーザー名、パスワードの 3 つのパラメーターを送信する必要があります。

switch ($_POST["op"]) {

    // User Authentication.
    case 1:
        $UName = $_POST["UName"];
        $UPass = $_POST["UPass"];
        $UPass = md5($UPass);

        //....Some code

    // New user registration process.
    case 2:
        $UName = $_POST["UName"];
        $UPass = $_POST["UPass"];
        $UEmail = $_POST["UEmail"];
        $UNick = $_POST["UNick"];
        $UPass = md5($UPass);

         //....Some code
        }

これまでの私のコード:

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://SomeUrl/login.php");

        try {

            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("1", "dan"));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            response = httpclient.execute(httppost);
            String responseBody = EntityUtils.toString(response.getEntity());
            Log.d(TAG, ""+responseBody);

        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
        } catch (IOException e) {
            // TODO Auto-generated catch block
        }

私は何を間違っていますか?

4

2 に答える 2

1

Android HTTP POST は次のようになります。

     HttpParams httpParams=new BasicHttpParams();
     HttpConnectionParams.setConnectionTimeout(httpParams, 10000);
     HttpConnectionParams.setSoTimeout(httpParams, 10000);

     // Data to send
     ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
     nameValuePairs.add(new BasicNameValuePair("UName", "dan"));
     nameValuePairs.add(new BasicNameValuePair("UPass", "password"));
     nameValuePairs.add(new BasicNameValuePair("op", "1"));

     //http post
     try{
     HttpClient httpclient = new DefaultHttpClient();
     HttpPost httppost = new HttpPost("http://SomeUrl/login.php");
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8"));
     HttpResponse response = httpclient.execute(httppost);
     HttpEntity entity = response.getEntity();
     is = entity.getContent();

     }catch(Exception e){

     }

PHP コードでは、mysql_real_escape_string($_POST['U​​Name']) を使用することを強くお勧めします。そうしないと、SQL インジェクションによる攻撃が容易になります。また、SSL 接続 (HTTPS) を使用するか、パスワードのみをハッシュ化 (MD5) して送信することをお勧めします。

于 2012-12-30T14:29:12.870 に答える
1

PHP コードを見ると、最低限、opパラメーターを指定する必要があります。次に、実行しようとしている操作に応じて、他の必要なパラメーターも指定してください。ユーザー認証の場合 (op = 1):

nameValuePairs.add(new BasicNameValuePair("op", "1"));
nameValuePairs.add(new BasicNameValuePair("UName", "dan"));
nameValuePairs.add(new BasicNameValuePair("Pass", "somepass"));

余談ですが、PHP サービスを使用して機密性の高いユーザー情報を処理する場合は、SSL で保護する必要があります。

于 2012-12-30T14:38:16.653 に答える