android类与php之间的会话处理

android类与php之间的会话处理,php,android,session,Php,Android,Session,我在android和php中工作。我调用了用php编写的API 我想管理这个android应用程序和php API之间的会话 这意味着我想抗议一个用户通过在地址栏中输入我的api的url直接调用我的api。每当用户在我的android应用程序中登录时,就应该在php端创建一个会话。所以,无论何时调用任何APi,都应该首先检查会话值,然后根据用户验证,APi应该只允许有效的loggedin用户 我正在使用这行代码:-DefaultHttpClient httpClient=new DefaultH

我在android和php中工作。我调用了用php编写的API

我想管理这个android应用程序和php API之间的会话

这意味着我想抗议一个用户通过在地址栏中输入我的api的url直接调用我的api。每当用户在我的android应用程序中登录时,就应该在php端创建一个会话。所以,无论何时调用任何APi,都应该首先检查会话值,然后根据用户验证,APi应该只允许有效的loggedin用户

我正在使用这行代码:-DefaultHttpClient httpClient=new DefaultHttpClient()

我不知道该怎么做。请帮我做这件事。你可以给我提供合适的链接,但请告诉我相关内容,这样我的时间不会浪费


提前谢谢。

您可能正在服务器端创建某种会话id,移动应用程序将检索并存储该id以供将来使用。然后,每次应用程序连接到服务器时,它都会在参数中给出这个id(www.example.com?id=some_id)

编辑

下面是关于从Android设备连接到PHP服务器的教程。它并没有描述如何创建ID,但由于您可以处理连接,我相信您将能够创建ID并将其存储在数据库中

还有一件事,要在PHP中检索给定URL(www.example.com?id=some_id)中的参数,必须使用$_REQUEST['id']变量。如果您想在给定的URL内发送更多参数,请使用“&”符号(www.example.com?id=some\u id&id2=some\u id)分隔它


确保检查什么是send-in参数,因为有人可能会出于SQL注入的目的使用您的参数。

您可能会在服务器端创建某种会话id,移动应用程序会检索并存储该id以供将来使用。然后,每次应用程序连接到服务器时,它都会在参数中给出这个id(www.example.com?id=some_id)

编辑

下面是关于从Android设备连接到PHP服务器的教程。它并没有描述如何创建ID,但由于您可以处理连接,我相信您将能够创建ID并将其存储在数据库中

还有一件事,要在PHP中检索给定URL(www.example.com?id=some_id)中的参数,必须使用$_REQUEST['id']变量。如果您想在给定的URL内发送更多参数,请使用“&”符号(www.example.com?id=some\u id&id2=some\u id)分隔它


确保检查什么是send-in参数,因为有人可能会出于SQL注入目的使用您的参数。

您可以创建一个Singleton to DefaultHttpClient, 然后,在发送HTTPRequest之前,将其用于所有连接

像这样:

public class SessionControl {
static private HttpClient httpclient = null;

public static HttpClient getHttpclient() {
    if( httpclient == null){
        SessionControl.setHttpclient(new DefaultHttpClient());
    }
    return httpclient;
}

public static void setHttpclient(HttpClient httpclient) {
    SessionControl.httpclient = httpclient;
}
}

然后,当您调用HttpClient时,您可以执行以下操作:

HttpClient httpclient = SessionControl.getHttpclient();

您可以创建一个到DefaultHttpClient的单例, 然后,在发送HTTPRequest之前,将其用于所有连接

像这样:

public class SessionControl {
static private HttpClient httpclient = null;

public static HttpClient getHttpclient() {
    if( httpclient == null){
        SessionControl.setHttpclient(new DefaultHttpClient());
    }
    return httpclient;
}

public static void setHttpclient(HttpClient httpclient) {
    SessionControl.httpclient = httpclient;
}
}

然后,当您调用HttpClient时,您可以执行以下操作:

HttpClient httpclient = SessionControl.getHttpclient();

从您的问题来看,您似乎希望在DefaultHttpClient调用之间存储PHPSESSID

您可以尝试使用: HttpClientParams.setCookiePolicy(params,CookiePolicy.BROWSER_兼容性)


将参数设置为DefaultHttpClient实例时。否则,您可以手动获取该会话id并将其附加到每个请求中

根据您的问题,您似乎希望在DefaultHttpClient调用之间存储PHPSESSID

您可以尝试使用: HttpClientParams.setCookiePolicy(params,CookiePolicy.BROWSER_兼容性)


将参数设置为DefaultHttpClient实例时。否则,您可以手动获取该会话id并将其附加到每个请求中

是的,先生,你是对的。。。请给我举一个例子。这将是你对我的巨大帮助…是的,先生,你是对的。。。请给我举一个例子。这将是非常大的帮助,你对我来说…你好,我正在使用这个单例到DefaultHttpClient,并在所有连接中使用它。。但是面对一些奇怪的行为。如果有一段时间我没有发送任何HttpRequest,我的连接似乎会被破坏,不允许我进一步请求。您能告诉我哪里出了问题吗?您好,我正在使用此singleton to DefaultHttpClient并在所有连接中使用它。。但是面对一些奇怪的行为。如果有一段时间我没有发送任何HttpRequest,我的连接似乎会被破坏,不允许我进一步请求。你能告诉我哪里出了问题吗。