android客户端和php+mysql+apache搭建的服务器之间的简单交互,实现登入功能。
实现原理就是android客户端发送请求,传给服务器登入的用户名密码,服务器收到这些,连接到数据库查询,如果用户名和密码匹配正确,就输出字符串返回给客户端。

服务器端:
先在mysql里面建一个testlogin的数据库,里面有一个users表,记录了id,用户名和密码。

在php的虚拟目录下新建个php项目,创建conn.php和login.php文件。刚学点php写的不好。
conn.php是连接mysql数据库的。代码如下:

  1. <?php
  2. $dbhost = "localhost:3306";
  3. $dbuser = "root"; //我的用户名
  4. $dbpass = ""; //我的密码
  5. $dbname = "testlogin"; //我的mysql库名
  6. $cn = mysql_connect($dbhost,$dbuser,$dbpass) or die("connect error");
  7. @mysql_select_db($dbname)or die("db error");
  8. mysql_query("set names 'UTF-8'");
  9. ?>login.php代码:<?php
  10. include ("conn.php");//连接数据库
  11. $username=str_replace(" ","",$_POST['name']);//接收客户端发来的username;
  12. $sql="select * from users where name='$username'";
  13. $query=mysql_query($sql);
  14. $rs = mysql_fetch_array($query);if(is_array($rs)){
  15. if($_POST['pwd']==$rs['password']){
  16. echo "login succeed";
  17. }else{
  18. echo "error";
  19. }
  20. }
  21. ?>
复制代码

php代码写的很烂,服务器算是架设完了。。

android客户端:
布局随意写一下就这样吧:

下面是主要的代码:

  1. class LoginHandler implements Runnable {
  2. @Override
  3. public void run() {
  4. // TODO Auto-generated method stub
  5. //get username and password;
  6. userName = user_name.getText().toString().trim();
  7. password = pass_word.getText().toString().trim();
  8. //连接到服务器的地址,我监听的是8080端口
  9. String connectURL="http://192.168.1.100:8080/text0/com.light.text/login.php/";
  10. //填入用户名密码和连接地址
  11. boolean isLoginSucceed = gotoLogin(userName, password,connectURL);
  12. //判断返回值是否为true,若是的话就跳到主页。
  13. if(isLoginSucceed){
  14. Intent intent = new Intent();
  15. intent.setClass(getApplicationContext(), HomeActivity.class);
  16. startActivity(intent);
  17. proDialog.dismiss();
  18. }else{
  19. proDialog.dismiss();
  20. // Toast.makeText(ClientActivity.this, "登入错误", Toast.LENGTH_LONG).show();
  21. System.out.println("登入错误");
  22. }
  23. }
  24. }//登入的方法,传入用户 密码 和连接地址
  25. private boolean gotoLogin(String userName, String password,String connectUrl) {
  26. String result = null; //用来取得返回的String;
  27. boolean isLoginSucceed = false;
  28. //test
  29. System.out.println("username:"+userName);
  30. System.out.println("password:"+password);
  31. //发送post请求
  32. HttpPost httpRequest = new HttpPost(connectUrl);
  33. //Post运作传送变数必须用NameValuePair[]阵列储存
  34. List params = new ArrayList();
  35. params.add(new BasicNameValuePair("name",userName));
  36. params.add(new BasicNameValuePair("pwd",password));
  37. try{
  38. //发出HTTP请求
  39. httpRequest.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));
  40. //取得HTTP response
  41. HttpResponse httpResponse=new DefaultHttpClient().execute(httpRequest);
  42. //若状态码为200则请求成功,取到返回数据
  43. if(httpResponse.getStatusLine().getStatusCode()==200){
  44. //取出字符串
  45. result=EntityUtils.toString(httpResponse.getEntity());
  46. ystem.out.println("result= "+result);
  47. }
  48. }catch(Exception e){
  49. e.printStackTrace();
  50. }
  51. //判断返回的数据是否为php中成功登入是输出的
  52. if(result.equals("login succeed")){
  53. isLoginSucceed = true;
  54. }
  55. return isLoginSucceed;
  56. }
复制代码


登入成功后会跳到主页:

代码就这样多,实现的最简单的登入方法,其实还有很多要实现的,需要为用户保存用户名和密码及登入成功后或者不成功后的反馈等。

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. 如何自学Android编程——Android自学资料大全
  3. jni开发之一
  4. Android(安卓)使用RxJava+Retrofit 2.0合并网络请求
  5. Android(安卓)Studio新功能解析,你真的了解Instant Run吗?
  6. 微信 JSSDK 在 Android(安卓)和 iOS 的一处不一致
  7. android NDK安装
  8. Android仿IOS上拉下拉弹性效果的实例代码
  9. Android(安卓)JNI配置及入门

随机推荐

  1. android 获取uri的正确文件路径的办法
  2. Android(安卓)NDK带来什么
  3. android 手机存储介质大全
  4. Android(安卓)软键盘弹出隐藏挤压界面等
  5. 如何实现android清理后台时,自己的软件不
  6. Android之Action Bar
  7. android layout属性
  8. Android(安卓)之 Retrofit 入门介绍
  9. Smalidea+IntelliJ IDEA/Android(安卓)St
  10. Android设置一个按钮右对齐