我在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();