avatar

Catalog
wordpress 网站手机客户端实现登陆

做大创项目时的一些经验,为了今后不忘记所以就在这里记录一下实现的过程。

android端程序


LoginActivity
protected void postRequestWithHttpClient() {  
new Thread(new Runnable(){  
    @Override     
    public void run(){  
        String Resultms = null;  
        String lines;  
        StringBuffer response = new StringBuffer("");  
        HttpURLConnection connection=null;  
        try{  
            URL url = new URL("http://192.168.56.101/app_login.php");   //服务器php文件的位置  
             String username = inputUsername.getText().toString();                    
             String password = inputPassword.getText().toString();        
             //连接服务器  
            connection=(HttpURLConnection) url.openConnection();                      
            //上传服务器内容  
        connection.setRequestMethod("POST");                  
        connection.setConnectTimeout(8000);  
        connection.setDoInput(true);//允许输入        
        connection.setDoOutput(true);//允许输出               
        connection.setUseCaches(false);  
            connection.setRequestProperty("Accept-Charset", "UTF-8");  
        connection.setRequestProperty("Content-type", "application/x-www-form-urlencoded");  
        connection.connect();                     
        DataOutputStream outStream = new DataOutputStream(connection.getOutputStream());    
        outStream.writeBytes("username="+ username+"&password="+password);  
        outStream.flush();    
        outStream.close();                           
        //读取响应  
           BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));   
           //读数据  
           while ((lines = reader.readLine()) != null) {  
                 lines = new String(lines.getBytes(), "utf-8");  
                 response.append(lines);  
              }  
           Log.v("HelloWorldActivity", response.toString());  
           reader.close();          
           //去掉response的空白字符  
           Resultms=response.toString().trim();  
           // 将服务器返回的结果存放到Message中  
           Log.v("HelloWorldActivity",Resultms);                        
           if(Resultms.equals("error"))    
             {    
                message.what = PASSD_FAIL;    
               handler.sendMessage(message);   
              }               
           if(Resultms.equals("success"))    
             {    
                message.what = SUCCESS;   
                handler.sendMessage(message);   
             }  
     //     Log.v("HelloWorldActivity", response.toString());               
            if(Resultms.equals("empty"))    
             {    
                message.what = EMPTY_FAIL;    
               handler.sendMessage(message);                             
             }  
            //不存在用户  
        //   Log.v("HelloWorldActivity",String.valueOf(Resultms.equals("nouser")));                  
           if(Resultms.equals("nouser"))    
            {    
               message.what = NO_USER;    
               handler.sendMessage(message);                       
            }                         
        }   
        catch (Exception e) {                 
        e.printStackTrace();  
        Log.d("HelloWorldActivity",e.toString());  
            message.what=CANNOT_CONNECT;  
            handler.sendMessage(message);   
        }  
    finally {  
        if (connection != null) {  
            connection.disconnect();  
        }  
    }  
}  
}).start();  

服务器端程序(php)


app_conn.php
<?php  
$dbhost = ‘localhost’;  
$dbuser = ‘root’; //我的用户名  
$dbpass = ‘52jyh4869ms’; //我的密码  
$dbname = ‘ordpress’; //我的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'");  
?>     

” ” 双引号里面的字段会经过编译器解释,然后再当作HTML代码输出。
‘ ‘ 单引号里面的不进行解释,直接输出。

app_login,php
<?php  
error_reporting(E_ALL ^ E_NOTICE);  
include("app_conn.php");  
//接收从客户端过来的数据  
if(isset($_REQUEST["username"]) && isset($_REQUEST["password"]))  
{  
//赋值  
$username=str_replace(" ","",$_REQUEST["username"]);  
//数据库查询  
$sql="select * from wp_users where user_login= $username";  

$query=mysql_query($sql);  

$rs = mysql_fetch_array($query);  
//赋值  
$password=$_REQUEST["password"];  
//如果有该用户名  
if(is_array($rs)){  
    $pass_user=$rs['user_pass'];  
    //一个全局变量  
    global $wp_hasher;  
    //如果没有进程使用该变量则进行操作,防止有多个线程进行  
    if(empty($wp_hasher)){  
        //wordpressy原来自带了一个验证密码的方法  
require_once('/usr/share/nginx/html/wordpress/wp-includes/class-phpass.php'); //这个地方一定不能分开写,昨天因为这里,耗了一个晚上!!  
// wordpress中用户保存到数据库中的密码都经过加密,所以要有一个加密验证  
        $wp_hasher = new PasswordHash(8,TRUE);  
    }                 
        $flag=$wp_hasher->CheckPassword($password,$pass_user);     
if($flag){  
    echo "success";  
              }           
else{  
echo "error";  
                }      
           }  
else{  
    echo "nouser";  
        }    
}  
else   
{   
     echo "empty";  
}  
?>  

下面一些坑真的让我很难受

  1. 在用readline()函数时,最后得到的结果会有一个空格符,弄了我好久,一直失败。经过同学的帮忙,才有成功了。通过java的黑科技,trim()。所以在进行密码或者字符串匹配的时候,要考虑一下,是否需要用trim()。该方法的作用是将空格等一些字符去掉。
  2. Wordpress 密码是加密的,要进行验证必须进行解密 关于wordpress 可以参考一下这篇博客
    http://blog.csdn.net/chengfei112233/article/details/6939144/
Author: kim yhow
Link: http://yoursite.com/2017/01/22/wordpress-网站手机客户端实现登陆/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
    微信
  • 支付寶
    支付寶