I suggest you go for PHP sessions. Its simple and you do not have to deal with cookies on your own.
The below is the code to truly destroy a session, copy-pasted from the example given in the PHP manual.
// Initialize the session.
// If you are using session_name("something"), don't forget it now!
session_start();
// Unset all of the session variables.
$_SESSION = array();
// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
// Finally, destroy the session.
session_destroy();
About your question:
What's better to use to keep user logged in until he closes his browser?
There is no fail-proof way of determining when the user has closed the browser. One approach is to continuously keep sending small AJAX requests to the server. When no requests are seen for an extended period of time, destroy the session.
Another approach is to listen for DOM Window unload and send a request to the server to destroy the session.