嘿,我是 android 的新手,我在登录页面上遇到了问题。我正在尝试连接到包含用户名和密码的 MySQL 数据库。我已尝试让我的代码正常工作,但它就是不允许我登录。
这是我的代码
package login.CBA;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.ArrayList;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.HttpProtocolParams;
public class login extends Activity {
private EditText etUsername;
private EditText etPassword;
private Button btnLogin;
private Button btnCancel;
private TextView lblResult;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
etUsername = (EditText)findViewById(R.id.Username);
etPassword = (EditText)findViewById(R.id.password);
btnLogin = (Button)findViewById(R.id.login);
btnCancel = (Button)findViewById(R.id.Cancel);
lblResult = (TextView)findViewById(R.id.result);
btnLogin.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
StrictMode.ThreadPolicy policy = new
StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("Username",
etUsername.getText().toString()));
postParameters.add(new BasicNameValuePair("password",
etPassword.getText().toString()));
/* String valid = "1";*/
String response = null;
try {
response =
CustomHttpClient.executeHttpPost("localhost/check.php",
postParameters);
String res = response.toString();
//res = res.trim();
res = res.replaceAll("\\s+","");
// error.setText(res);
if (res.equals("1")) {
Intent i = new Intent(getApplicationContext(), mainmenu.class);
startActivity(i);
}
else lblResult.setText("Incorrect Username or Password Entered");
}
catch (Exception e) {
etUsername.setText(e.toString());
}
}
});
}
}
和PHP代码
<?php
$un=$_POST['username'];
$pw=$_POST['password'];
$conn = mysql_connect('localhost', 'root', 'user');
mysql_select_db('cba');
$query = 'SELECT * FROM login WHERE username = ‘$un’ AND password = ‘$pw’';
$result = mysql_query($query) or die ('Unable to verify user because : ' .
mysql_error());
if (mysql_num_rows($result) > 0) {
echo 1;
}
else {
// print status message
echo 0;
}
?>
最佳答案
我认为这条线上可能存在问题:
$query = 'SELECT * FROM login WHERE username = ‘$un’ AND password = ‘$pw’';
看起来您正在尝试使用不同种类的单引号。试试这个:
$query = "SELECT * FROM login WHERE username = '$un' AND password = '$pw'";
此外,您应该对用户名和密码中的特殊字符进行转义,以防止 SQL 注入(inject)攻击。
$un = mysql_real_escape_string($_POST['username']);
$pw = mysql_real_escape_string($_POST['password']);
查看这个过去的 SO 问题,了解有关 “org.apache.http.NoHttpResponseException:目标服务器无法响应” 的信息 HttpClient on Android : NoHttpResponseException through UMTS/3G
关于php - 使用 MySQL 的 Android 登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9069758/