2017-09-19 14 views
0

ユーザーがログインまたは登録できるMYSQLデータベースに接続されたアプリケーションを作成する。登録クラスでは、私は新しいユーザーを登録するためにOKHTTP3を使用します。 OKHTTP3は、クエリを実行するPHPページにリクエストを行います。ページの応答は常に同じです(コード:200、messagge: "empty")。 IDは、コードとmessaggeのようなPHPページの応答をカスタムにしたいので、登録が成功したかどうかを知ることができます。どうすればいいですか?PHPページのカスタムRESPONSEを作成する

できるだけ簡単にお願いします。

マイOKHTTP3要求:

String reg_name = username.getText().toString(); 
      String reg_pass = password.getText().toString(); 
      String reg_url = "https://collectcards.000webhostapp.com/register.php"; 

      OkHttpClient client = new OkHttpClient(); 

      RequestBody formBody = new FormBody.Builder() 
        .add("user_name", reg_name) 
        .add("user_pass", reg_pass) 
        .build(); 

      Request request = new Request.Builder() 
        .url(reg_url) 
        .post(formBody) 
        .build(); 

      client.newCall(request).enqueue(new Callback() { 
       @Override 
       public void onFailure(Call call, IOException e) { 
        // Request failed 
       } 

       @Override 
       public void onResponse(Call call, Response response) throws IOException { 
        // Handle whatever comes back from the server 
        String res = response.message(); //MESSAGE IS ALWAYS EMPTY, COSE IS ALWAYS 200 
        if(res.equals("OK")) { //ID LIKE TO CUSTOM THE MESSAGGE TO SAY OK WHEN IT GOES WELL AND NOTOK WHEN IT FAIL 
         ok = true; 
         risposta = "Registrazione Avvenuta"; 
        }else { 
         risposta = "Registrazione Fallita"; 
         ok = false; 
        } 
        mHandler.post(new Runnable() { 
         @Override 
         public void run() { 
          Toast.makeText(thisContext, risposta, Toast.LENGTH_LONG).show(); 
          if (ok) { 
           Intent myIntent = new Intent(thisContext, mainMenuActivity.class); 
           thisContext.startActivity(myIntent); 
          }else{ 
           password.setText(""); 
           username.setText(""); 
          } 
         } 
        }); 



       } 
      }); 

私のPHPページ:

<?php 

$connessione = mysqli_connect("localhost", "usr", "psw", "db"); 

$user_name = $_POST['user_name']; 

$user_pass = $_POST['user_pass']; 

$query = "INSERT INTO `player` (`username`, `password`, `money`) VALUES ('".$user_name."', '".$user_pass."', '100');"; 

$risultato = mysqli_query($connessione, $query); 

if($risultato){ 
//CUSTOM MESSAGGE 
}else{ 

} 

?> 
+2

** WARNING **:あなたが使用する必要がありますmysqli' '使用する場合は、[パラメータ化クエリ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)を使ってクエリにユーザーデータを追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'、' $ _GET'、**任意の**ユーザデータを直接クエリーに入れないでください。誰かがあなたのミスを悪用しようとすると非常に危険です。 – tadman

+0

ありがとうございました。ありがとうございました:) –

答えて

1

あなたがhttp_response_code();にコードされた出力を設定することができ、例えば:サーバーの場合

http_response_code(500); 

エラー、悪い要求のために400、など体のために、あなたはちょうどechoにできるはずです体の中にあります。私はjson_encode()のようなものをデータの配列にすることをお勧めします。

PHPクローズタグは使用しないでください。

Why would one omit the close tag?

+0

このような意味です:if($ risultato){ http_response_code(1); } else { http_response_code(2); } –

+0

@GianmarcoFerruzziはい、まさにそのようです。しかし、実際のHTTPレスポンスコード(https://en.wikipedia.org/wiki/List_of_HTTP_status_codes)を使用すれば、あなたの人生は長期的にはずっと簡単になります。 – Skrrp

+0

標準コードを使用していません。 –

関連する問題