Итак, сначала для Android: вы получаете это NetworkOnMainThreadException
, потому что вы пытаетесь сделать HTTP-запрос в основном потоке приложения, который является потоком пользовательского интерфейса. Вы не должны делать никаких блокирующих операций в этой теме. Вместо этого используйте AsyncTask .
Я не совсем уверен, что вызывает IllegalArgumentException
, но я думаю, что это строка:
response = CustomHttpClient.executeHttpPost("http://127.0.0.1/es/check.php", postParameters);
Вы, вероятно, изменили URL (localhost обычно не имеет смысла на телефоне). Часть схемы это http
. Может быть, у вас есть что-то вроде " http://..."
(обратите внимание на начальный пробел) в исходном коде?
Краткое примечание по PHP:
$sql = 'SELECT * from people WHERE username = "' .$_POST['un'] . '" and password = "' .md5($_POST['pw']) . '"';
Это то, что вы называете SQL-инъекцией .
Обновление: Вот несколько примеров. Не проверял, надеюсь, это работает.
public class LoginLayout extends Activity {
EditText un,pw;
TextView error;
Button ok;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
un=(EditText)findViewById(R.id.et_un);
pw=(EditText)findViewById(R.id.et_pw);
ok=(Button)findViewById(R.id.btn_login);
error=(TextView)findViewById(R.id.tv_error);
ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new LoginTask().execute(un.getText().toString(), pw.getText().toString());
}
});
}
private class LoginTask extends AsyncTask<String, Void, Object> {
protected Object doInBackground(String... params) {
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("username", params[0]));
postParameters.add(new BasicNameValuePair("password", params[1]));
String response = null;
try {
response = CustomHttpClient.executeHttpPost("http://127.0.0.1/es/check.php", postParameters);
String res = response.toString();
res = res.replaceAll("\\s+","");
return res;
} catch (Exception e) {
return e;
}
}
protected void onPostExecute(Object result) {
if (result instanceof String) {
if (result.equals("1")) {
error.setText("Correct Username or Password");
} else {
error.setText("Sorry!! Wrong Username or Password Entered");
}
} else if (result instanceof Exception) {
un.setText(result.toString());
}
}
}
}