我在android中使用登录概念,一次只能登录一个用户名,而第二次只能登录相同的用户名。一切正常。现在,我想在服务器端使用会话超时概念,但它无法正常工作,该值存储在会话中,但无法获取另一个php文件。

我的登录php代码

session_start();
$_SESSION['user'] =1;


第二个PHP代码

session_start();
    if(isset($_SESSION['user']))
    {
    //my action
    }


我的Android代码

  DefaultHttpClient httpClient = new DefaultHttpClient();
            httpClient.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.RFC_2109);
            HttpPost httpPost = new HttpPost(url);
            httpPost.setHeader("User-Agent", "Mozilla/5.0 (X11; U; Linux " +
                    "i686; en-US; rv:1.8.1.6) Gecko/20061201 Firefox/2.0.0.6 (Ubuntu-feisty)");
                httpPost.setHeader("Accept", "text/html,application/xml," +
                    "application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5");
                httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");
            httpPost.setEntity(new UrlEncodedFormEntity(params));

            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();

最佳答案

这是您用于第一个和第二个请求的代码吗?

如果是这样,那么问题就在于您总是创建一个新的客户端,这会在服务器端导致新的会话,因为存储在cookie中的sessionid不可用。

因此,只需创建一次httpClient,并对两个请求使用相同的实例。应该解决问题

像这样:

 DefaultHttpClient httpClient = new DefaultHttpClient();
            httpClient.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.RFC_2109);

            HttpPost httpPost1 = new HttpPost(url1);

        httpPost1.setHeader("User-Agent", "Mozilla/5.0 (X11; U; Linux " +
                "i686; en-US; rv:1.8.1.6) Gecko/20061201 Firefox/2.0.0.6 (Ubuntu-feisty)");
            httpPost1.setHeader("Accept", "text/html,application/xml," +
                "application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5");
            httpPost1.setHeader("Content-Type", "application/x-www-form-urlencoded");
        httpPost1.setEntity(new UrlEncodedFormEntity(params));

        HttpResponse httpResponse = httpClient.execute(httpPost1);
        HttpEntity httpEntity = httpResponse.getEntity();
        is1 = httpEntity.getContent();


        HttpPost httpPost2 = new HttpPost(url2);
        httpPost2.setHeader("User-Agent", "Mozilla/5.0 (X11; U; Linux " +
                "i686; en-US; rv:1.8.1.6) Gecko/20061201 Firefox/2.0.0.6 (Ubuntu-feisty)");
            httpPost2.setHeader("Accept", "text/html,application/xml," +
                "application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5");
            httpPost2.setHeader("Content-Type", "application/x-www-form-urlencoded");
        httpPost2.setEntity(new UrlEncodedFormEntity(params));

        HttpResponse httpResponse2 = httpClient.execute(httpPost2);
        HttpEntity httpEntity2 = httpResponse2.getEntity();
        is2 = httpEntity2.getContent();

08-03 22:09