2

I work with session to login users in my website. The problem is, I want to allow users to remember password, so after close/open the browser they dont need to login again.

Do I need to use cookies with session to make it?

my code:

$user = $_POST['user'];
$pass = $_POST['pass'];

$stmt = $mysqli->prepare("SELECT id, user, pass FROM users WHERE user = ?");
$stmt->bind_param('s', $user);
$stmt->execute();
$stmt->bind_result($id, $user, $pass2);
$stmt->fetch();
$stmt->close();

if (password_verify($pass, $pass2)) {

    session_start();
    $_SESSION["user"]   = $user;

    setcookie("user", $user, time()+3600000); // set the cookie and next?


}

so I set the cookie and then? how to login user next time? should I check if session['user'] is empty and them session = cookie value?

RGS
  • 4,062
  • 4
  • 31
  • 67

2 Answers2

3

By default, when we are setting up a session data, a session cookie will be saved on client's browser. So if you want to keep the user logged in after he/she closes the browser, perhaps you may consider the php.ini session.cookie_lifetime directive to specify the lifetime of session cookie in seconds.

Or you may also use the session_set_cookie_params function. It offers the $lifetime parameter to set the lifetime of a cookie.

For example, to keep the session cookie forever:

<?php

session_set_cookie_params(0);
session_start();
Risan Bagja Pradana
  • 4,494
  • 1
  • 20
  • 22
  • it is nice, but will it remember user after close/open browser? I will try it! thank you – RGS Feb 26 '16 at 07:06
1

In such cases basic idea is during user login generate some random hash and save it in users table for logged user and at same time create cookie with name login_hash as value set generated has and next time when user logged in check if login_hash exists and it match to some user in db then login with that user.

Armen
  • 4,064
  • 2
  • 23
  • 40
  • oh, I see it! so I will create a login `hash id` in this cookie and save this id in mysql, after if the cookie id match with some user id hash = login again. thank you! – RGS Feb 26 '16 at 06:56
  • 1
    Yes this is basic example, but there is match harder and secure ways you can check here: http://stackoverflow.com/questions/244882/what-is-the-best-way-to-implement-remember-me-for-a-website for more details – Armen Feb 26 '16 at 07:01