I am learning php.
I have a class and a function to start a custom session like the following, Now how can I use the said custom session_start in every php page? please help. my code is like
<?php
// myclass.php
class abcd{
function sec_session_start() {
$session_name = 'sec_session_id'; // I have Set a custom session name
$secure = false;
$httponly = true;
if (ini_set('session.use_only_cookies', 1) === FALSE) {
$err='Could not initiate a safe session (ini_set)';
$err = Encryption::encode($err);
header("Location: ../login.php?error_msg=".$err);
exit();
}
// Gets current cookies params.
$cookieParams = session_get_cookie_params();
session_set_cookie_params($cookieParams["lifetime"],
//session_set_cookie_params(time()+3600,
$cookieParams["path"],
$cookieParams["domain"],
$secure,
$httponly);
// Sets the session name to the one set above.
session_name($session_name);
session_start();
session_regenerate_id(true);
}
}
?>
In this case the following error is showing : Notice: A session had already been started – ignoring session_start()
myphp page is below –
<?php // mypage.php include_once "myclass.php"; $mevalue = new abcd; $mevalue->sec_session_start(); code code code ?>
Please help me to solve this.
Advertisement
Answer
A session should last throughout the page visit and not be renewed on each page, e.g. a user logs in once and this is stored into a session so the user doesn’t need to login again for each new page or click.
Mostly a session starts if someone visits your page and remains until the user leaves the page -> closing the session.
The best way is to check if a session is open for this user and only start a session if the user doesn’t have one.
To close a session one can use
session_write_close ( void ) : bool
With this you can update your code to have a get_session function. In this function you can check if a session exists and use that one, if not start a new one
class abcd{
function init_session()
{
if (!isset($_SESSION)) {
$this->sec_session_start();
}
}
function sec_session_start() {....
And in your page
$mevalue->init_session();