使用PHP会话与我的android应用程序登录


Using PHP sessions with my android application to login

我正在尝试为我的android应用程序制作一个登录脚本,该脚本会将我的电子邮件和密码发送到PHP服务器,验证登录,然后创建一个PHP会话,以便用户保持登录状态。这是我的代码,

HttpPost httppost = new HttpPost("http://server.com/login.php");
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
public String login() {
    String userID = "";
    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("email", "e@e.com"));
        nameValuePairs.add(new BasicNameValuePair("password", "admin"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);
        userID = EntityUtils.toString(response.getEntity());
        //Log.v("Login response", "" + userID);

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
    }
    return userID;
} 

这个脚本成功地将数据发送到我的服务器,我的PHP成功地将用户登录。我已经将"HttpClient HttpClient=new DefaultHttpClient();"放在了我的主登录方法之外。这有助于存储会话,直到我调用另一个类,然后它再次重置会话。因此,我想知道如何更改代码,以便以某种方式存储"httpclient",这样我就可以保留会话并登录到我的服务器。非常感谢。

Android Http获取会话Cookie

获取cookie会话ID,并在下一次对服务器的请求中使用该cookie。

另一种方法是让php代码在登录响应中回显一个包含session_id的字符串。让android应用程序检索并存储此id。任何未来的请求都可以通过使用post方法进行,其中sess_id=stored id

<?php
if(isset($_POST['sess_id']))
{
session_id($_POST['sess_id']); //starts session with given session id
session_start();
$_SESSION['count']++;
}
else {
session_start(); //starts a new session
$_SESSION['count']=0;
}
echo session_id();
?>