J'essaie de comprendre comment enregistrer les détails de l'utilisateur sur la base de données du serveur. Bien que en regardant une vidéo et en suivant les étapes mentionnées, je suis en mesure d'enregistrer le nom, mot de passe, dob mais le champ e-mail affiche 0 à chaque fois. S'il vous plaît dites-moi où est le problème, je ne suis pas capable de comprendre. Voici mon code.Email Champ ne pas enregistrer à la base de données - Inscription Android Page
register.php
<?php
$con = mysqli_connect("my_host", "db_user", "db_password", "my_db");
$name = $_POST["name"];
$email = $_POST["email"];
$password = $_POST["password"];
$dob = $_POST["dob"];
$statement = mysqli_prepare($con, "INSERT INTO user (name, email, password, dob) VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($statement, "siss", $name, $email, $password, $dob);
mysqli_stmt_execute($statement);
$response = array();
$response["success"] = true;
echo json_encode($response);
?>
J'utilise Volley pour cela.
RegisterRequest.class
public class RegisterRequest extends StringRequest {
private static final String REQUEST_REGISTER_URL = "http://www.myhostingaddress/register.php";
private Map<String, String> params;
public RegisterRequest(String name, String email, String password, String dob, Response.Listener<String> listener){
super(Method.POST, REQUEST_REGISTER_URL,listener,null);
params = new HashMap<>();
params.put("name", name);
params.put("email", email);
params.put("password", password);
params.put("dob",dob);
}
@Override
public Map<String, String> getParams() {
return params;
}
}
et mon activité d'enregistrement principal
Register.class
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_up);
name = (EditText) findViewById(R.id.name);
eemail = (EditText) findViewById(R.id.email);
password = (EditText) findViewById(R.id.password_signup);
dob = (EditText) findViewById(R.id.DOB);
register_btn = (Button) findViewById(R.id.Signup);
register_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String Name = name.getText().toString();
final String Email = eemail.getText().toString();
final String Password = password.getText().toString();
final String Dob = dob.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){
Toast.makeText(Sign_up.this, "Account Created, Login now !", Toast.LENGTH_SHORT).show();
startActivity(new Intent(Sign_up.this,Login_Page.class));
} else {
Toast.makeText(Sign_up.this, "Registration Failed, Try Again !", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
RegisterRequest registerRequest = new RegisterRequest(Name,Email,Password,Dob,responseListener);
RequestQueue queue = Volley.newRequestQueue(Sign_up.this);
queue.add(registerRequest);
}
});
}
}
Regardez bien votre deuxième colonne et le deuxième argument que vous avez passé dans la liaison. –
** Ne stockez jamais de mots de passe en texte brut! ** Veuillez utiliser *** [fonctions intégrées] de PHP (http://jayblanchard.net/proper_password_hashing_with_PHP.html) *** pour gérer la sécurité des mots de passe. Si vous utilisez une version de PHP inférieure à 5.5, vous pouvez utiliser 'password_hash()' [pack de compatibilité] (https://github.com/ircmaxell/password_compat). *** Il n'est pas nécessaire de [échapper les mots de passe] (http://stackoverflow.com/q/36628418/1011527) *** ou d'utiliser un autre mécanisme de nettoyage avant le hachage. Cela change * le mot de passe et provoque un codage supplémentaire inutile. –
Merci pour votre aide. Le problème est résolu maintenant. –