簡體   English   中英

使用 Volley Library、PHP 和 MySQL 登錄后,如何在下一個活動 (Android) 中顯示用戶的余額?

[英]How can I display a user's balance in the next activity (Android) after login using Volley Library, PHP, and MySQL?

我一直在開發一個應用程序,允許注冊用戶登錄以檢查他們的余額。 我已經能夠讓應用程序成功地使用 php 驗證來自 sql db 的用戶名和密碼。 該應用程序使用 volley 庫進行網絡連接。 現在這是我的問題,成功登錄后,我如何讓我的應用程序在下一個活動中顯示來自數據庫的用戶余額。 我知道我必須在 php 腳本中查詢數據庫然后 encode_json() 但是我如何傳遞用戶名和密碼? 我正在使用 FILTER_POST[INPUT_POST,""] 將用戶的用戶名和密碼從 loginactivity(android) 傳遞到 php 腳本,但在 php 腳本中使用 FILTER_POST[],$_SESSION 似乎影響了 JSON 輸出並且沒有顯示任何內容. 任何幫助將不勝感激。

這是登錄方法:

public void login(){
    StringRequest request = new StringRequest(Request.Method.POST, "http://192.168.1.139/loginapp/login.php",
            new Response.Listener<String>(){
        @Override
        public void onResponse(String response) {
            if (response.contains("1")){
                startActivity(new Intent(getApplicationContext(),Main2Activity.class));
            }else{
                Toast.makeText(getApplicationContext(),
                        "Wrong username or password", Toast.LENGTH_SHORT).show();
            }

        }
    }, new Response.ErrorListener(){
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    }){
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<>();
            params.put("username",et_username.getText().toString());
            params.put("password",et_password.getText().toString());
            return params;
        }
    };
    Volley.newRequestQueue(this).add(request);
}

這是 login.php 腳本

<?php
    define('DB_HOST', 'localhost');
    define('DB_USER', 'root');
    define('DB_PASS', 'password');
    define('DB_NAME', 'employee101');

    //connecting to database and getting the connection object
    $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

   //Checking if any error occured while connecting
   if (mysqli_connect_errno()) {
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
    die();
   }

   $username = filter_input(INPUT_POST, "username");
   $password = filter_input(INPUT_POST, "password");

   $mysqli = new mysqli("localhost","root","password","employee101");
   $result = mysqli_query($mysqli,"select * from employee_data where 
   username = '".$username."' and password = '".$password."'");
   if ($data = mysqli_fetch_array($result)){
   echo '1';
   }else{
   echo '0';
   }

   ?>

這是第二個活動的 php 腳本,它將顯示用戶的余額和貸款

<?php 

 //database constants
 define('DB_HOST', 'localhost');
 define('DB_USER', 'root');
 define('DB_PASS', 'password');
 define('DB_NAME', 'employee101');

 //connecting to database and getting the connection object
 $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

 //Checking if any error occured while connecting
 if (mysqli_connect_errno()) {
 echo "Failed to connect to MySQL: " . mysqli_connect_error();
 die();
 }

 //creating a query
 $stmt = $conn->prepare("SELECT id, name, surname, age, username, password 
 FROM employee_data where username = '".$username."' and password = 
 '".$password."';");

 //executing the query 
 $stmt->execute();

 //binding results to the query 
 $stmt->bind_result($id, $name, $surname, $age, $username, $password);

 $products = array(); 

 //traversing through all the result 
 while($stmt->fetch()){
 $temp = array();
 $temp['id'] = $id; 
 $temp['name'] = $name; 
 $temp['surname'] = $surname; 
 $temp['age'] = $age; 
 $temp['username'] = $username; 
 $temp['password'] = $password; 
 array_push($products, $temp);
 }

 //displaying the result in json format 
 echo json_encode($products);

我曾嘗試使用 $_SESSION[] 將用戶名從第一個腳本傳遞到第二個腳本,但它不起作用。

在第一個 php 腳本中進行更改

 $result = mysqli_query($mysqli,"select * from employee_data where 
   username = '".$username."' and password = '".$password."'");
   if ($data = mysqli_fetch_array($result)){
   echo '1';
   }else{
   echo '0';
   }

像這樣

$result = mysqli_query($mysqli,"select * from employee_data where 
       username = '".$username."' and password = '".$password."'");
       if ($data = mysqli_fetch_array($result)){
      //return json array here only.You are already fetching employee records here
       }else{
       echo '0';
       }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM