登录失败显示来自android中的php的错误消息

时间:2018-02-07 01:22:11

标签: php android

我是Android开发的新手,我正在尝试使用volley https://www.simplifiedcoding.net/android-volley-tutorial/来关注此登录教程。我跟着,它完美无缺。但是,当我尝试登录时,它给我的错误从我的php webservice响应。

LoginActivity.class

private void loginUser( final String email, final String password) {
        // Tag used to cancel the request
        String cancel_req_tag = "login";
        progressDialog.setMessage("Logging you in...");
        showDialog();
        StringRequest strReq = new StringRequest(Request.Method.POST,
                URL_FOR_LOGIN, 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) {
                        String user = jObj.getJSONObject("USER_ID").getString("LASTNAME");
                        // Launch User activity
                        Intent intent = new Intent(
                                LoginActivity.this,
                                CameraTestActivity.class);
                        intent.putExtra("username", user);
                        startActivity(intent);
                        finish();
                    } else {

                        //show error output in my login screen

                        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, "Login Error: " + error.getMessage());
                Toast.makeText(getApplicationContext(),
                        error.getMessage(), Toast.LENGTH_LONG).show();
                hideDialog();
            }
        }) {

            @Override
            protected Map<String, String> getParams() {
                // Posting params to login url
                Map<String, String> params = new HashMap<String, String>();
                params.put("USER_ID", email);
                params.put("LASTNAME", password);
                return params;
            }

的login.php

  <?php
    require_once 'dbConnect.php';


    $response = array("error"=> FALSE);

  if(isset($_POST['USER_ID'])) {
         echo "my echo response";


        $username = $_POST['USER_ID'];
        $password = md5($_POST['LASTNAME']);



        $pdo = Database::connect();
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

       $query = $pdo->prepare("SELECT * FROM tbl_UserDetails  WHERE USER_ID= ? AND LASTNAME= ?");
        $query->execute(array($username,$password));

        $row = $query->fetch(PDO::FETCH_ASSOC);
        Database::disconnect();


    } 



        if (!(empty($row))){

            $response["error"]= FALSE;
            $response["user"]["ID"]=$row["USER_ID"];
        $response["user"]["LASTNAME"]=$row["LASTNAME"];
            echo json_encode($response);    



        }
        else{
            $response["error"] = TRUE;
//It show this message even I correctly input the correct username and password
            $response["error_msg"] = "Wrong credentials!";
            echo json_encode($response);
        }



    ?>

login.php回复:

{"error":true,"error_msg":"Wrong credentials!"}

你能帮助我登录吗?

1 个答案:

答案 0 :(得分:0)

我认为您的 PDO 语句存在问题。

更改

         $query = $pdo->prepare("SELECT * FROM tbl_UserDetails ");
         $query->execute(array($username,$password));

        $query = $pdo->prepare("SELECT * FROM tbl_UserDetails  WHERE name= ? AND password= ?");
        $query->execute(array($username, $password));

还有另一个问题。

 if(isset($_GET['USER_ID']))

这种情况永远不会得到满足。 因为您正在从您的Android客户端发出POST请求 所以把它改成

 if(isset($_POST['USER_ID']))

注意:

在数据库中更改我的答案中的列名。

另请参阅this有关PDO prepare()

的信息