关于android客户端和mysql通过php完成注册功能的问题

问题描述

关于android客户端和mysql通过php完成注册功能的问题

自己正在自学中 php还不太会 求一个php的程序可以接收我下面代码的json 并且验证username是否存在 不存在则可以插入username和password~也顺便帮我看看代码哪里有什么问题之类的谢谢了!!!!

解决方案

public class Register_ extends Activity{
private EditText register_username;
private EditText register_passwd;
private EditText register_repasswd;
private Button register_submit;
public static final int SHOW_RESPONSE=0;

   private class MessageHandler extends Handler
    {
        //持有activity的弱引用 避免内存泄漏
        private final WeakReference<Register_> weakReference;
        public MessageHandler(Register_ activity)
        {
            this.weakReference = new WeakReference<Register_>(activity);
        }
        public void handleMessage(Message msg)
        {
            Register_ activity = weakReference.get();
            //如果activity已经在处于被销毁状态 或者已经被销毁了 不再处理消息
            if (activity == null || activity.isFinishing())
            {
                return;
            }
            switch (msg.what)
            {
                case SHOW_RESPONSE:
                    String response = (String)msg.obj;
                    try
                    {
                        JSONObject jsonObject = new JSONObject(response);
                        Boolean error = jsonObject.getBoolean("error");
                        String message = jsonObject.getString("msg");
                        String result = jsonObject.getString("result");
                        JsonBack jsonBack = new JsonBack(error,message,result);
                        Log.d("Register_",jsonBack.toString());
                        if(jsonBack.isError())
                        {
                            Toast.makeText(Register_.this, jsonBack.getMsg(), Toast.LENGTH_SHORT).show();
                        }
                        if(!jsonBack.isError())
                        {
                            Toast.makeText(Register_.this, "注册成功", Toast.LENGTH_SHORT).show();
                            //onPause();
                            Intent intent = new Intent(Register_.this, Login.class);
                            startActivity(intent);
                            finish();
                        }
                    }catch (Exception e)
                    {
                        e.printStackTrace();
                    }
            }
        }
    }

@Override
protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.signup);
     register_username=(EditText)findViewById(R.id.editText1);
     register_passwd=(EditText)findViewById(R.id.editText2);
     register_repasswd=(EditText)findViewById(R.id.editText3);
     register_submit=(Button)findViewById(R.id.button1);
     register_submit.setOnClickListener(new View.OnClickListener() {

        @Override
         public void onClick(View v)
        {
            if (v.getId() == R.id.button1)
            {
                String username = register_username.getText().toString();
                String password = register_passwd.getText().toString();
                String repassword = register_repasswd.getText().toString();
                if(password.equals(repassword))
                {
                    //使用POST方法向服务器发送数据
                    sendRequstWithHttpClient(username, password);
                }
                else {

                    Toast.makeText(Register_.this, "两次输入的密码不一样", Toast.LENGTH_SHORT).show();
                }
            }
        }

    });
 }
 private Handler messageHandler=new MessageHandler(this);

private void sendRequstWithHttpClient(final String username,
        final String password) {
     new Thread(new Runnable() {

         @Override
            public void run()
            {
                try
                {
                    HttpClient httpClient = new DefaultHttpClient();
                    String url = "192.168.1.203/EnjoyDemo/register";
                    //第二步:生成使用POST方法的请求对象
                    HttpPost httpPost = new HttpPost(url);
                    //NameValuePair对象代表了一个需要发往服务器的键值对
                    NameValuePair pair1 = new BasicNameValuePair("username", username);
                    NameValuePair pair2 = new BasicNameValuePair("password", password);
                    //将准备好的键值对对象放置在一个List当中
                    ArrayList<NameValuePair> pairs = new ArrayList<NameValuePair>();
                    pairs.add(pair1);
                    pairs.add(pair2);
                    try
                    {
                        //创建代表请求体的对象(注意,是请求体)
                        HttpEntity requestEntity = new UrlEncodedFormEntity(pairs, "utf-8");
                        //将请求体放置在请求对象当中
                        httpPost.setEntity(requestEntity);
                        //执行请求对象
                        try
                        {
                            //第三步:执行请求对象,获取服务器发还的相应对象
                            HttpResponse response = httpClient.execute(httpPost);
                            //第四步:检查相应的状态是否正常:检查状态码的值是200表示正常
                            if (response.getStatusLine().getStatusCode() == 200)
                            {
                                //第五步:从相应对象当中取出数据,放到entity当中
                                HttpEntity entity = response.getEntity();
                                BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()));
                                String result = reader.readLine();
                                Message message = new Message();
                                message.what = SHOW_RESPONSE;
                                message.obj = result;
                                messageHandler.sendMessage(message);
                                //Log.d("HTTP", "post:" + result);
                            }
                        } catch (Exception e)
                        {
                            e.printStackTrace();
                        }
                    } catch (Exception e)
                    {
                        e.printStackTrace();
                    }
                }catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
        }).start();
    }

}

解决方案二:

你要找的是不是《Android和PHP最佳实践》?

解决方案三:

找个网络框架用用吧,你这效率太低,PHP一样是抛接口给你,username什么的为空需要客户端也就是android来判断,然后提交,回调接受服务器返回的json。

时间: 2024-10-28 21:18:32

关于android客户端和mysql通过php完成注册功能的问题的相关文章

android开发-Android客户端怎么判断是否登录或注册成功??

问题描述 Android客户端怎么判断是否登录或注册成功?? 想做一个学校教务管理系统的Android客户端 登录和注册的时候怎么判断是否成功登录和注册?还有登录的时候有验证码怎么办?求大神指导

java-Eclipse开发安卓客户端程序用来实现登陆注册功能

问题描述 Eclipse开发安卓客户端程序用来实现登陆注册功能 哪位大侠能够指导下: 用安卓写客户端程序,mysql为数据库存储用户的用户名和密码,现在需要的是用C/S模式,在Eclipse创建工程的时候,工程里面需要哪些文件,比如新建一个安卓应用工程,那么servlet的部分要放在哪,还是直接建一个web工程呢? 解决方案 你是要连接mysql数据库吗

Android客户端实现注册、登录详解(2)_Android

上文中介绍了安卓客户端与服务器交互,实现注册功能,Android客户端实现注册/登录详解(一) 本文将继续介绍App与服务器的交互实现登录和自动登录的功能,上文说到请求服务器进行注册主要是通过POST请求携带参数实现,起作用的主要代码: StringRequest request=new StringRequest(Method.POST, url, new Listener<String>() { //请求成功 @Override public void onResponse(String

Android实现登录注册功能封装

我们都知道Android应用软件基本上都会用到登录注册功能,那么对一个一个好的登录注册模块进行封装就势在必行了.这里给大家介绍一下我的第一个项目中所用到的登录注册功能的,已经对其进行封装,希望能对大家有帮助,如果有什么错误或者改进的话希望各位可以指出. 我们都知道登录注册系列功能的实现有以下几步: 注册账号 登录账号 (第三方账号登录) 记住密码 自动登录 修改密码 大体的流程如下 对于需要获取用户登录状态的操作,先判断用户是否已经登录. 如果用户已经登录,则继续后面的操作,否则,跳转到登录页面

j2ee-j2EE客户端 和android客户端之间的内容传递问题。

问题描述 j2EE客户端 和android客户端之间的内容传递问题. 做一个app服务端用的是j2EE维护一个mysql数据库,,客户端用android我想在动态生成一个SQLite小型数据库,现在存在的问题就是1:mysql数据库往客户端传递数据时候用的是什么格式json,还是xml,具体原因是什么.2:这样处理合理吗?手机端维护一个SQLite和mysql能不能更好的同步办法. 解决方案 首先你的第一个问题应该是服务器端与客户端传递用json还是xml,现在一般都是用json的,因为json

android+json+php+mysql实现用户反馈功能方法解析_Android

相信每个项目都会有用户反馈建议等功能,这个实现的方法很多,下面是我实现的方法,供大家交流.首先看具体界面,三个字段.名字,邮箱为选填,可以为空,建议不能为空.如有需要可以给我留言.  下面贴出布局代码,这里用到一个<include layout="@layout/uphead">就是把另外一个布局文件引入到这个布局中. 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> &l

android+json+php+mysql实现用户反馈功能方法解析

相信每个项目都会有用户反馈建议等功能,这个实现的方法很多,下面是我实现的方法,供大家交流.首先看具体界面,三个字段.名字,邮箱为选填,可以为空,建议不能为空.如有需要可以给我留言.   下面贴出布局代码,这里用到一个<include layout="@layout/uphead">就是把另外一个布局文件引入到这个布局中. 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> &

Android客户端与PC服务器如何实现Socket通信

本文介绍Android终端持续扫描AP信息并发送给服务器端的实现.首先基于TCP协议在Android终端和PC两端之间形成网络虚拟链路.使用ServerSocket创建TCP服务器端,然后在Android客户端使用Socket的构造器来连接服务器.其中Android终端通过WIFI连接和PC处于同一局域网. 1. PC服务器启用ServerSocket 两个通信实体在建立虚拟链路之前,需要有一方先准备好,主动接受来自其他通信实体的连接请求. 使用ServerSocket对象监听来自客户端的Soc

使用Mina框架开发QQ Android 客户端(3) 登陆功能的实现

在博客中有登陆界面的文章http://blog.csdn.net/vestigge/article/details/8124674 就不在重复了,直接看登陆的代码, 用Mina传递字符串上节已经看过了,要实现传递对象,也非常简单,只需要修改一下过滤器: chain.addLast("codec", new ProtocolCodecFilter(new ObjectSerializationCodecFactory())); 在Android客户端,登陆的Activity中: publ