2017-07-10 14 views
0

これは私の最初の投稿ですので、私と一緒に裸にしてください。私のPHP登録フォームはデータベースにデータを送信しません

私は登録アクティビティとログインアクティビティを持つ基本的なアンドロイドアプリを作って、データベース用に無料のウェブホスティング(000webhost)を使用しました。

すべて正常に機能していますが、登録アクティビティフォーム(電子メールとパスワード)を使用して登録すると、ユーザーの資格情報はデータベースに保存されません。それはエラーを表示しません。コードをチェックしたところ、これまでのところエラーはありません。

<?php 
$con = mysqli_connect("host", "database user", "password", "database 
name"); 

$email = $_POST["email"]; 
$password = $_POST["password"]; 

$statement = mysqli_prepare($con, "INSERT INTO database name (email, 
password) VALUES (?, ?)"); 
mysqli_stmt_bind_param($statement, "ss", $email, $password); 
mysqli_stmt_execute($statement); 

$response = array(); 
$response["success"] = true; 

echo json_encode($response); 
?> 









public class RegisterActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_register); 

    final EditText etEmail = (EditText) findViewById(R.id.etEmail); 
    final EditText etPassword = (EditText) findViewById(R.id.etPassword); 
    final Button bRegister = (Button) findViewById(R.id.bRegister); 

    bRegister.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final String email = etEmail.getText().toString(); 
      final String password = etPassword.getText().toString(); 

      Response.Listener<String> responseListener = new Response.Listener<String>(){ 

       @Override 
       public void onResponse(String response) { 
        try { 
         JSONObject jsonResponse = new JSONObject(response); 
         boolean success = jsonResponse.getBoolean("success"); 

         if (success){ 
          Intent intent = new Intent(RegisterActivity.this, LoginActivity.class); 
          RegisterActivity.this.startActivity(intent); 
         } else { 
          AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this); 
          builder.setMessage("Register Failed") 
          .setNegativeButton("Retry", null) 
          .create() 
          .show(); 
         } 

        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 

       } 
      }; 




      RegisterRequest registerRequest = new RegisterRequest(email, password, responseListener); 
      RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this); 
      queue.add(registerRequest); 

     } 
    }); 
} 

}

public class RegisterRequest extends StringRequest { 

private static final String REGISTER_REQUEST_URL = ""; 
private Map<String, String> params; 

public RegisterRequest(String email, String password, Response.Listener<String> listener){ 
    super(Method.POST, REGISTER_REQUEST_URL, listener, null); 
    params = new HashMap<>(); 
    params.put("email", email); 
    params.put("password", password); 
} 

@Override 
public Map<String, String> getParams() { 
    return params; 
} 

}

+3

**決して**ストア、プレーンテキストのパスワードに置き換えてください。代わりに['password_hash()'](http://us3.php.net/manual/en/function.password-hash.php)と['password_verify()'](http://us3.php.net /manual/en/function.password-verify.php)。 5.5より前のバージョンのPHPを使用している場合は、MD5またはSHA1を使用せず**パスワードをハッシュします。代わりに、[この互換性パック](https://github.com/ircmaxell/password_compat)を使用することができます。 –

答えて

0

の違いに注意してください:あなたは、データベースサーバを持っています。そのサーバー上にデータベース(または複数)があります。そのようなデータベースは、いくつかのウェブサイト/プロジェクトに使用することができます。そのデータベースでは、複数のテーブルが存在します。

このような表には、情報を保存します。

あなたのINSERTクエリは、あなたのテーブルの名前は、それが動作しない理由だろう「データベース名」、でない限りあなたは、いくつかのテーブル

0

に挿入する必要があり、「データベース名」 に挿入したいと考えています。また、私はmySQLがテーブル名のスペースを許可するとは思わないが、私は間違っている可能性があります。

$statement = mysqli_prepare($con, "INSERT INTO database name (email, 
password) VALUES (?, ?)"); 

$statement = mysqli_prepare($con, "INSERT INTO table_name (email, 
password) VALUES (?, ?)"); 
関連する問題