![](/img/trans.png)
[英]Android Volley getting response from login php but not going to next activity
[英]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.