inicie session no Android com php e mysql

Estou tentando criar um login e registro no meu aplicativo para Android, mas o problema que enfrento é como, eu posso fazer meu registro na tabela, mas não consigo fazer login com esses valores registrados. Está me mostrando uma mensagem de “falha” do meu script de login php. Abaixo está o meu arquivo “login.php”

 

E este é o meu arquivo Java Android ‘Login.java’

 package com.example.tejask.add4u; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.AsyncTask; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import com.android.volley.AuthFailureError; import com.android.volley.DefaultRetryPolicy; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.StringRequest; import com.android.volley.toolbox.Volley; import java.util.HashMap; import java.util.Map; /** * Created by tejas k on 26-04-2016. */ public class Login extends AppCompatActivity implements View.OnClickListener { private Button btnLogin; private TextView txtRegister; private EditText editUsername,editPassword; public static final String USER_NAME = "username"; public static final String KEY_PASSWORD="password"; private static final String LOGIN_URL = "http://10.0.2.2/loginn.php"; private String username; private String password; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); editUsername = (EditText) findViewById(R.id.editUsername); editPassword = (EditText) findViewById(R.id.editPassword); btnLogin= (Button) findViewById(R.id.btnLogin); txtRegister=(TextView)findViewById(R.id.txtRegister); txtRegister.setOnClickListener(this); btnLogin.setOnClickListener(this); } private void userLogin() { username = editUsername.getText().toString().trim(); password = editPassword.getText().toString().trim(); StringRequest stringRequest = new StringRequest(Request.Method.POST, LOGIN_URL,new Response.Listener() { @Override public void onResponse(String response) { if(response.trim().equals("success")){ openProfile(); } else{ Toast.makeText(Login.this,response,Toast.LENGTH_LONG).show(); } } },new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Toast.makeText(Login.this,error.toString(),Toast.LENGTH_LONG ).show(); } }){ @Override protected Map getParams() throws AuthFailureError { Map map = new HashMap(); map.put(USER_NAME,username); map.put(KEY_PASSWORD,password); return map; } }; RequestQueue requestQueue = Volley.newRequestQueue(this); requestQueue.add(stringRequest); } private void openProfile(){ Intent intent = new Intent(this,ProfileActivity.class); intent.putExtra(USER_NAME, username); startActivity(intent); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btnLogin: userLogin(); break; case R.id.txtRegister: Intent register = new Intent(Login.this,Register.class); startActivity(register); break; } } } 

No seu script você está faltando a ) em if(isset($check){ .

No entanto, acho que você deve mudar isso na declaração preparada do MySQLi para obter segurança.

Você pode mudar seu php para o seguinte:

 if($_SERVER['REQUEST_METHOD']=='POST'){ $username = $_POST['username']; $password = $_POST['password']; require_once('dbConnect.php'); if($stmt = $con->prepare("SELECT * FROM register WHERE username = ? AND password = ? LIMIT 1")) { $stmt->bind_param('ss', $username, $password); if (!$stmt->execute()) { die('execute() failed: ' . htmlspecialchars($stmt->error)); } $stmt->store_result(); if ($stmt->num_rows == 1) { echo 'success'; } else { echo 'failure'; } } else { die('prepare() failed: ' . htmlspecialchars($con->error)); } $stmt->close(); } 

adicionar LIMIT 1 significa que você só obterá 1 resultado de volta ou zero se o usuário não existir.

Oi, Rebecca, você deu credenciais erradas, uma vez que vê essa linha se eu não estiver errado

final estático privado String LOGIN_URL = ” http://10.0.2.2/loginn.php “;

Aqui você deu loginn.php em vez de login.php

Mais dúvidas visitam: http://androidcoding.in/2016/05/08/android-login-and-registration-based-on-mysql-database-using-php-part-1/