我对 Android 很陌生。我尝试使用 PHP 和 Mysql 创建登录应用程序。我提到了一个来源,他使用了一个名为 GenAsync.jar 的库来避免“他说”的许多编码。然而,我遵循了他的指示,但不幸的是我无法登录。问题是什么?难道是因为我在移动设备上运行它,而不是像他演示的那样在模拟器上运行?我也使用在线服务器,但他的演示使用本地主机。请帮帮我吗?非常感谢。
package issa.example.com.mysqldatabase;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.kosalgeek.asynctask.AsyncResponse;
import com.kosalgeek.asynctask.PostResponseAsyncTask;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity implements AsyncResponse{
EditText etUsername, etPassword;
Button btnLogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etUsername = (EditText)findViewById(R.id.etUsername);
etPassword = (EditText)findViewById(R.id.etPassword);
btnLogin = (Button)findViewById(R.id.btnLogin);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
HashMap postData = new HashMap();
postData.put("btnLogin", "Login");
postData.put("mobile", "android");
postData.put("user_name", etUsername.getText().toString());
postData.put("pass_word", etPassword.getText().toString() );
PostResponseAsyncTask loginTask =
new PostResponseAsyncTask(MainActivity.this, postData);
loginTask.execute("http://mchucha.com/android/logini.php");
}
});
}
@Override
public void processFinish(String output) {
if(output.equals("success")){
Intent intent = new Intent(MainActivity.this, Activity2.class);
Toast.makeText(this, "Login Successfully",
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(MainActivity.this, "Login Failed", Toast.LENGTH_SHORT).show();
}
}
}
PHP script text
<?php
$servername = "localhost";
$username = "mchuchac_user";
$password = "123";
$dname = "mchuchac_db";
$conn = mysqli_connect($servername, $username, $password, $dname);
if (!$conn){
die ("connection failed: " .mysqli_connect_error());
}
else {
echo " connection success";
}
?>
<?PHP
include_once("connection.php");
if( isset($_POST['user_name']) && isset($_POST['pass_word']) ) {
$username = $_POST['user_name'];
$password = $_POST['pass_word'];
$query = "SELECT username, password FROM tbl_client ".
" WHERE username = '$username' AND password = '$password'";
$result = mysqli_query($conn, $query);
if($result->num_rows > 0){
if(isset($_POST['mobile']) && $_POST['mobile'] == "android"){
echo "success";
exit;
}
echo " Login success";
} else{
echo "Login Failed <br/>";
}
}
?>
最佳答案
虽然您的问题不太清楚(您为失败做了什么并将用户名和密码值传递给 php/web 服务),但我想尝试通过执行一些步骤来帮助您解决失败/错误。
首先确保DB连接良好。
$conn = mysqli_connect($servername, $username, $password, $dname); 如果(!$ conn){ die ("连接失败:".mysqli_connect_error()); } 别的 { echo "连接成功"; }
- 通过回显 $username 和 $password 来检查用户名和密码值是否已在 Web 服务中传递。
如果第二步运行良好,请按如下方式调试查询:
$query = "从 tbl_client 中选择用户名、密码"。 "WHERE 用户名 = '$username' AND 密码 = '$password'";
在 mysql 应用程序中运行该查询(例如 phpmyadmin)。
这就是我的解释,希望对你有帮助。
关于java - 使用 MySql 和 PHP 进行 Android 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37694285/