php - How to insert into a table after a successful session login

Solution:
this is my solution
I have created some functions for getting user browser or user ip etc
Then creating this function below to add it after the$_SESSION['user_id']
function insert_into_users_sessions($user_id){
// here add your database class name
global $database;
$user = $_SESSION['user_id'];
$date = new DateTime();
$date = $date->format('Y-m-d H:i:s');
$user_browser = get_user_browser();
$user_ip = get_user_ip();
$user_os = get_user_os();
@$database->query("INSERT INTO `user_sessions` (`user_id`, `session_ip`, `session_os`, `session_browser`, `session_date`) VALUES ('$user', '$user_ip', '$user_os', '$user_browser', '$date')");
}
Answer
Solution:
if(isset($_POST['rememberme'])) {
setcookie('username', $_POST['username'], time()+60*60*24*30);
setcookie('password', $_POST['password'], time()+60*60*24*30);
setcookie('user_id', User::login($_POST['username'], $_POST['password']), time()+60*60*24*30);
insert_into_db($params);
} else {
$_SESSION['user_id'] = User::login($_POST['username'], $_POST['password']);
insert_into_db($params);
}
function insert_into_db($params){
// write insert query
}
In an ideal world, I'd use PDO with bound parameters in the insert function, have every table with PRIMARY_KEYs set, and user inputs sanitized. And of course, hash passwords before storage as per How to use password_hash
UPDATE
if(!empty($_POST) && empty($_SESSION['error'])) {
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
$password_raw = $_POST['password'];
// Get these data
$session_params = array();
$session_id = 1;
$session_date = time();
$user_id = User::login($username, $password_raw);
$user_browser = '';
$user_os = '';
$user_ip = '';
array_push($session_params, $session_id, $session_date, $user_id, $user_browser, $user_os, $user_ip);
if(isset($_POST['rememberme'])) {
setcookie('username', $username, time()+60*60*24*30);
//setcookie('password', $_POST['password'], time()+60*60*24*30);
setcookie('user_id', $user_id, time()+60*60*24*30);
insert_session_into_db($session_params);
} else {
$_SESSION['user_id'] = $user_id;
insert_session_into_db($session_params);
}
redirect();
}
function insert_session_into_db($session_params)
{
// include database config file, or instantiate your Database class here
extract($session_params);
$sql = "INSERT INTO users_sessions (session_id, session_date, user_id, user_browser, user_os, user_ip)
VALUES ('".$session_id."', '".$session_date."', '".$user_id."', '".user_os."', '".$user_ip."')";
$res = $database->query($sql);
if ($res === true) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $database->error;
}
$database->close();
}
Share solution ↓
Additional Information:
Link To Answer People are also looking for solutions of the problem: mysqli::real_connect(): (hy000/2002): connection refused
Didn't find the answer?
Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.
Similar questions
Find the answer in similar questions on our website.
Write quick answer
Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.