我正在开发一个Android应用程序,并在应用程序开发方面有点新。 PHP和MySQL正用于后端。我正在构建登录页面,我想在JSON解析后检查用户名和密码是否与数据库匹配。我已经解析了JSON,现在只剩下检查部分了。我觉得我应该制作一个列表并使用foreach循环查询它,但我不知道如何。任何建议或代码示例将不胜感激!这是我的登录和onPostExecute方法 -
public void login(View view) {
Log.i("username", userNameField.getText().toString());
Log.i("password", passwordField.getText().toString());
DownloadTask task = new DownloadTask();
task.execute("http://something.com.php");
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
Log.i("Website Content", result);
try {
JSONArray arr = new JSONArray(result);
for (int i = 0; i < arr.length(); i++) {
JSONObject jsonPart = arr.getJSONObject(i);
Log.i("user", jsonPart.getString("email"));
Log.i("pass", jsonPart.getString("password"));
dbUserName= jsonPart.getString("email");
dbPassword= jsonPart.getString("password");
// if ((userName == dbUserName) && (password == (dbPassword))){
// Log.i("AppInfo", "Login Successful!");
// }
// else{
// Log.i("Appinfo", "you suck");
// }
} catch (JSONException e) {
e.printStackTrace();
}
}
答案 0 :(得分:2)
您不需要为每个循环编写。您必须对something.com.php进行GET / POST调用,并且将您的用户名和密码发送到服务器。
然后你必须检查天气,用户名和密码与你的数据库匹配。在 something.com.php
中写下该逻辑如果匹配,请将成功标记发送到您的应用为1和0。
在您的应用中解析成功标记,并检查天气为0或1。
在此基础上,让用户登录您的应用。
请参阅:
https://www.simplifiedcoding.net/android-php-mysql-login-tutorial-android-login-app-3/
http://www.androidhive.info/2012/01/android-login-and-registration-with-php-mysql-and-sqlite/
答案 1 :(得分:1)
您需要向服务器发送登录详细信息并检查服务器是否成功或失败,然后按照您应用中的响应进行操作以下是它的简要示例
String UserName=EditText_UserName.getText().toString(); String Password=EditText_Password.getText().toString();
new asynctask().execute(UserName,Password)
Phone=params[0];
Password=params[1];
3:将用户名和密码编码为单个字符串,如下所示
> String data = URLEncoder.encode("UserName", "UTF-8") + "=" +
> URLEncoder.encode(UserName, "UTF-8");
> data += "&" + URLEncoder.encode("Password", "UTF-8") + "=" + URLEncoder.encode(Password, "UTF-8");
4:现在借助BufferedWriter
URL url = new URL("http://www.Example.com/Login.php");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoInput(true);
connection.setDoOutput(true);
OutputStream os = connection.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write(data);
writer.flush();
writer.close();
os.close();
5:现在在Php文件中比较结果与数据库并将响应发送回Android应用程序,如此
//Get Values first
$UserName=$_POST['UserName'];
$Password =$_POST['Password'];
//then compare it in SQL DATABASE
$sql = "SELECT * FROM mobile_App WHERE UserName = '$UserName' AND Password = '$Password'";
//Send Response to app if query success
$response['status'] = 'SUCCESS';
//else send failed
6:检查应用程序中的响应代码
int responseCode = connection.getResponseCode();//It will return 200 if Connection Established with server
//Get Success String or Fail String By InputStream
7:最后比较服务器成功或失败的字符串,然后再做进一步。