android客户端和php+mysql+apache搭建的服务器之间的简单交互,实现登入功能。
实现原理就是android客户端发送请求,传给服务器登入的用户名密码,服务器收到这些,连接到数据库查询,如果用户名和密码匹配正确,就输出字符串返回给客户端。
服务器端:
先在mysql里面建一个testlogin的数据库,里面有一个users表,记录了id,用户名和密码。
在php的虚拟目录下新建个php项目,创建conn.php和login.php文件。刚学点php写的不好。
conn.php是连接mysql数据库的。代码如下:
- <?php
- $dbhost = "localhost:3306";
- $dbuser = "root"; //我的用户名
- $dbpass = ""; //我的密码
- $dbname = "testlogin"; //我的mysql库名
- $cn = mysql_connect($dbhost,$dbuser,$dbpass) or die("connect error");
- @mysql_select_db($dbname)or die("db error");
- mysql_query("set names 'UTF-8'");
- ?>login.php代码:<?php
- include ("conn.php");//连接数据库
- $username=str_replace(" ","",$_POST['name']);//接收客户端发来的username;
- $sql="select * from users where name='$username'";
- $query=mysql_query($sql);
- $rs = mysql_fetch_array($query);if(is_array($rs)){
- if($_POST['pwd']==$rs['password']){
- echo "login succeed";
- }else{
- echo "error";
- }
- }
- ?>
复制代码
php代码写的很烂,服务器算是架设完了。。
android客户端:
布局随意写一下就这样吧:
下面是主要的代码:
- class LoginHandler implements Runnable {
- @Override
- public void run() {
- // TODO Auto-generated method stub
- //get username and password;
- userName = user_name.getText().toString().trim();
- password = pass_word.getText().toString().trim();
- //连接到服务器的地址,我监听的是8080端口
- String connectURL="http://192.168.1.100:8080/text0/com.light.text/login.php/";
- //填入用户名密码和连接地址
- boolean isLoginSucceed = gotoLogin(userName, password,connectURL);
- //判断返回值是否为true,若是的话就跳到主页。
- if(isLoginSucceed){
- Intent intent = new Intent();
- intent.setClass(getApplicationContext(), HomeActivity.class);
- startActivity(intent);
- proDialog.dismiss();
- }else{
- proDialog.dismiss();
- // Toast.makeText(ClientActivity.this, "登入错误", Toast.LENGTH_LONG).show();
- System.out.println("登入错误");
- }
- }
- }//登入的方法,传入用户 密码 和连接地址
- private boolean gotoLogin(String userName, String password,String connectUrl) {
- String result = null; //用来取得返回的String;
- boolean isLoginSucceed = false;
- //test
- System.out.println("username:"+userName);
- System.out.println("password:"+password);
- //发送post请求
- HttpPost httpRequest = new HttpPost(connectUrl);
- //Post运作传送变数必须用NameValuePair[]阵列储存
- List params = new ArrayList();
- params.add(new BasicNameValuePair("name",userName));
- params.add(new BasicNameValuePair("pwd",password));
- try{
- //发出HTTP请求
- httpRequest.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));
- //取得HTTP response
- HttpResponse httpResponse=new DefaultHttpClient().execute(httpRequest);
- //若状态码为200则请求成功,取到返回数据
- if(httpResponse.getStatusLine().getStatusCode()==200){
- //取出字符串
- result=EntityUtils.toString(httpResponse.getEntity());
- ystem.out.println("result= "+result);
- }
- }catch(Exception e){
- e.printStackTrace();
- }
- //判断返回的数据是否为php中成功登入是输出的
- if(result.equals("login succeed")){
- isLoginSucceed = true;
- }
- return isLoginSucceed;
- }
复制代码
登入成功后会跳到主页:
代码就这样多,实现的最简单的登入方法,其实还有很多要实现的,需要为用户保存用户名和密码及登入成功后或者不成功后的反馈等。