8

I am trying to make a login script for my android application, the script will send my email and password to the PHP server, verify the login and then create a PHP session so that the user stays logged in. This is my code,

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;
} 

This script successfully sends data to my server and my PHP successfully logs the user on. I have placed "HttpClient httpclient = new DefaultHttpClient();" outside my main login method. This has helped store the session until I call upon another class, then it just resets the session again. So I am wondering how I can alter the code so that "httpclient" is somehow stored so I can keep the session and stay logged into my server. Thank you!

rusty009
  • 836
  • 7
  • 16
  • 30
  • I think you can save the sessionId in a `SharedPreferences` and every time you need to send a request just get it from there – monim Nov 06 '15 at 15:22

2 Answers2

4

Android Http get Session Cookie

Get the cookie session ID and use that cookie in the next requests to the server.

Community
  • 1
  • 1
Fernando André
  • 1,213
  • 3
  • 19
  • 32
  • Thank you, but how do I save the Header variable so that I can easily access it from all my classes? – rusty009 Aug 01 '12 at 18:33
  • Can you pass a global object that holds that variable info? Try and see this example on the idea... http://www.javaworld.com/javaqa/2000-05/03-qa-0526-pass.html – Fernando André Aug 02 '12 at 14:03
3

Another way is to make your php code echo a string containing the session_id in its response to login.Let the android app retrieve this id and store it. Any future requests can be made by using post method with 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();
?>
  • Would you like write a example of how you use a request to server then you already have session id ? – Vinigas Oct 20 '16 at 18:45