Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import android.app.Activity;
- import android.app.ProgressDialog;
- import android.content.Intent;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.Toast;
- import com.android.volley.Request.Method;
- import com.android.volley.Response;
- import com.android.volley.VolleyError;
- import com.android.volley.toolbox.StringRequest;
- import org.json.JSONException;
- import org.json.JSONObject;
- import java.util.HashMap;
- import java.util.Map;
- import info.androidhive.loginandregistration.R;
- import info.androidhive.loginandregistration.app.AppConfig;
- import info.androidhive.loginandregistration.app.AppController;
- import info.androidhive.loginandregistration.helper.SQLiteHandler;
- import info.androidhive.loginandregistration.helper.SessionManager;
- public class RegisterActivity extends Activity {
- private static final String TAG = RegisterActivity.class.getSimpleName();
- private Button btnRegister;
- private Button btnLinkToLogin;
- private EditText inputFullName;
- private EditText inputEmail;
- private EditText inputPassword;
- private ProgressDialog pDialog;
- private SessionManager session;
- private SQLiteHandler db;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_register);
- inputFullName = (EditText) findViewById(R.id.name);
- inputEmail = (EditText) findViewById(R.id.email);
- inputPassword = (EditText) findViewById(R.id.password);
- btnRegister = (Button) findViewById(R.id.btnRegister);
- btnLinkToLogin = (Button) findViewById(R.id.btnLinkToLoginScreen);
- // Progress dialog
- pDialog = new ProgressDialog(this);
- pDialog.setCancelable(false);
- // Session manager
- session = new SessionManager(getApplicationContext());
- // SQLite database handler
- db = new SQLiteHandler(getApplicationContext());
- // Check if user is already logged in or not
- if (session.isLoggedIn()) {
- // User is already logged in. Take him to main activity
- Intent intent = new Intent(RegisterActivity.this,
- MainActivity.class);
- startActivity(intent);
- finish();
- }
- // Register Button Click event
- btnRegister.setOnClickListener(new View.OnClickListener() {
- public void onClick(View view) {
- String name = inputFullName.getText().toString().trim();
- String email = inputEmail.getText().toString().trim();
- String password = inputPassword.getText().toString().trim();
- if (!name.isEmpty() && !email.isEmpty() && !password.isEmpty()) {
- registerUser(name, email, password);
- } else {
- Toast.makeText(getApplicationContext(),
- "Please enter your details!", Toast.LENGTH_LONG)
- .show();
- }
- }
- });
- // Link to Login Screen
- btnLinkToLogin.setOnClickListener(new View.OnClickListener() {
- public void onClick(View view) {
- Intent i = new Intent(getApplicationContext(),
- LoginActivity.class);
- startActivity(i);
- finish();
- }
- });
- }
- /**
- * Function to store user in MySQL database will post params(tag, name,
- * email, password) to register url
- * */
- private void registerUser(final String name, final String email,
- final String password) {
- // Tag used to cancel the request
- String tag_string_req = "req_register";
- pDialog.setMessage("Registering ...");
- showDialog();
- StringRequest strReq = new StringRequest(Method.POST,
- AppConfig.URL_REGISTER, new Response.Listener<String>() {
- @Override
- public void onResponse(String response) {
- Log.d(TAG, "Register Response: " + response.toString());
- hideDialog();
- try {
- JSONObject jObj = new JSONObject(response);
- boolean error = jObj.getBoolean("error");
- if (!error) {
- // User successfully stored in MySQL
- // Now store the user in sqlite
- String uid = jObj.getString("uid");
- JSONObject user = jObj.getJSONObject("user");
- String name = user.getString("name");
- String email = user.getString("email");
- String created_at = user
- .getString("created_at");
- // Inserting row in users table
- db.addUser(name, email, uid, created_at);
- Toast.makeText(getApplicationContext(), "User successfully registered. Try login now!", Toast.LENGTH_LONG).show();
- // Launch login activity
- Intent intent = new Intent(
- RegisterActivity.this,
- LoginActivity.class);
- startActivity(intent);
- finish();
- } else {
- // Error occurred in registration. Get the error
- // message
- String errorMsg = jObj.getString("error_msg");
- Toast.makeText(getApplicationContext(),
- errorMsg, Toast.LENGTH_LONG).show();
- }
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- }, new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- Log.e(TAG, "Registration Error: " + error.getMessage());
- Toast.makeText(getApplicationContext(),
- error.getMessage(), Toast.LENGTH_LONG).show();
- hideDialog();
- }
- }) {
- @Override
- protected Map<String, String> getParams() {
- // Posting params to register url
- Map<String, String> params = new HashMap<String, String>();
- params.put("name", name);
- params.put("email", email);
- params.put("password", password);
- return params;
- }
- };
- // Adding request to request queue
- AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
- }
- private void showDialog() {
- if (!pDialog.isShowing())
- pDialog.show();
- }
- private void hideDialog() {
- if (pDialog.isShowing())
- pDialog.dismiss();
- }``
- }
- public class AppConfig {
- // Server user login url
- public static String URL_LOGIN = "http://my_ip_address/android_login_api/login.php";
- // Server user register url
- public static String URL_REGISTER = "http://my_ip_address/android_login_api/register.php";
- }
- DB_Connect.php
- <?php
- class DB_Connect {
- private $conn;
- // Connecting to database
- public function connect() {
- require_once 'include/Config.php';
- // Connecting to mysql database
- $this->conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
- // return database handler
- return $this->conn;
- }
- }
- ?>
- <?php
- /**
- * Database config variables
- */
- define("DB_HOST", "localhost");
- define("DB_USER", "root");
- define("DB_PASSWORD", "root");
- define("DB_DATABASE", "android_api");
- ?>
- require_once 'include/DB_Functions.php';
- $db = new DB_Functions();
- // json response array
- $response = array("error" => FALSE);
- if (isset($_POST['name']) && isset($_POST['email']) && isset($_POST['password'])) {
- // receiving the post params
- $name = $_POST['name'];
- $email = $_POST['email'];
- $password = $_POST['password'];
- // check if user is already existed with the same email
- if ($db->isUserExisted($email)) {
- // user already existed
- $response["error"] = TRUE;
- $response["error_msg"] = "User already existed with " . $email;
- echo json_encode($response);
- } else {
- // create a new user
- $user = $db->storeUser($name, $email, $password);
- if ($user) {
- // user stored successfully
- $response["error"] = FALSE;
- $response["uid"] = $user["unique_id"];
- $response["user"]["name"] = $user["name"];
- $response["user"]["email"] = $user["email"];
- $response["user"]["created_at"] = $user["created_at"];
- $response["user"]["updated_at"] = $user["updated_at"];
- echo json_encode($response);
- } else {
- // user failed to store
- $response["error"] = TRUE;
- $response["error_msg"] = "Unknown error occurred in registration!";
- echo json_encode($response);
- }
- }
- } else {
- $response["error"] = TRUE;
- $response["error_msg"] = "Required parameters (name, email or password) is missing!";
- echo json_encode($response);
- }
- ?>
- class DB_Functions {
- private $conn;
- // constructor
- function __construct() {
- require_once 'DB_Connect.php';
- // connecting to database
- $db = new Db_Connect();
- $this->conn = $db->connect();
- }
- // destructor
- function __destruct() {
- }
- /**
- * Storing new user
- * returns user details
- */
- public function storeUser($name, $email, $password) {
- $uuid = uniqid('', true);
- $hash = $this->hashSSHA($password);
- $encrypted_password = $hash["encrypted"]; // encrypted password
- $salt = $hash["salt"]; // salt
- $stmt = $this->conn->prepare("INSERT INTO users(unique_id, name, email, encrypted_password, salt, created_at) VALUES(?, ?, ?, ?, ?, NOW())");
- $stmt->bind_param("sssss", $uuid, $name, $email, $encrypted_password, $salt);
- $result = $stmt->execute();
- $stmt->close();
- // check for successful store
- if ($result) {
- $stmt = $this->conn->prepare("SELECT * FROM users WHERE email = ?");
- $stmt->bind_param("s", $email);
- $stmt->execute();
- $user = $stmt->get_result()->fetch_assoc();
- $stmt->close();
- return $user;
- } else {
- return false;
- }
- }
- /**
- * Get user by email and password
- */
- public function getUserByEmailAndPassword($email, $password) {
- $stmt = $this->conn->prepare("SELECT * FROM users WHERE email = ?");
- $stmt->bind_param("s", $email);
- if ($stmt->execute()) {
- $user = $stmt->get_result()->fetch_assoc();
- $stmt->close();
- // verifying user password
- $salt = $user['salt'];
- $encrypted_password = $user['encrypted_password'];
- $hash = $this->checkhashSSHA($salt, $password);
- // check for password equality
- if ($encrypted_password == $hash) {
- // user authentication details are correct
- return $user;
- }
- } else {
- return NULL;
- }
- }
- /**
- * Check user is existed or not
- */
- public function isUserExisted($email) {
- $stmt = $this->conn->prepare("SELECT email from users WHERE email = ?");
- $stmt->bind_param("s", $email);
- $stmt->execute();
- $stmt->store_result();
- if ($stmt->num_rows > 0) {
- // user existed
- $stmt->close();
- return true;
- } else {
- // user not existed
- $stmt->close();
- return false;
- }
- }
- /**
- * Encrypting password
- * @param password
- * returns salt and encrypted password
- */
- public function hashSSHA($password) {
- $salt = sha1(rand());
- $salt = substr($salt, 0, 10);
- $encrypted = base64_encode(sha1($password . $salt, true) . $salt);
- $hash = array("salt" => $salt, "encrypted" => $encrypted);
- return $hash;
- }
- /**
- * Decrypting password
- * @param salt, password
- * returns hash string
- */
- public function checkhashSSHA($salt, $password) {
- $hash = base64_encode(sha1($password . $salt, true) . $salt);
- return $hash;
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement