Хорошо, вот моя проблема:
Когда пользователь заходит на мой сайт, я помещаю всю его информацию о пользователе в сеанс, подобный этому
session_start();
//Put all user info into session cookie
$_SESSION["login"] = 'true';
$_SESSION["id"] = $user_info['id'];
$_SESSION["firstname"] = $user_info['firstname'];
$_SESSION["lastname"] = $user_info['lastname'];
$_SESSION["screen_name"] = $user_info['screen_name'];
$_SESSION["facebook"] = $user_info['facebook'];
$_SESSION["email"] = $user_info['email'];
$_SESSION["date_joined"] = $user_info['date_joined'];
$_SESSION["account_type"] = $user_info['account_type'];
$_SESSION["account_active"] = $user_info['account_active'];
$_SESSION["hashed_password"] = $user_info['hashed_password'];
Проблема в том, что если они вошли в систему с www.domain.com, а затем оказались на странице domain.com или наоборот, они вошли на сайт domain.com и оказались на странице www.domain.com информация, сохраненная в сеансе, недоступна.
Как мне получить информацию о сеансе независимо от того, вошли ли они с www или нет?
@ Мистер Гроссман
Было бы правильно сделать что-то вроде этого:
<?php
//Ok I modified the code so I don't get the undefined errors I was getting
//OLD CODE
//$currentCookieParams = session_get_cookie_params();
//$rootDomain = '.domain.com';
//session_set_cookie_params(
//$currentCookieParams["3600"],
//$currentCookieParams["/"],
//$rootDomain,
//$currentCookieParams["false"],
//$currentCookieParams["false"]
//);
//session_name('mysessionname');
//NEW CODE
$rootDomain = '.beckerfamily1.com';
session_set_cookie_params( 3600, '/', $rootDomain, false, false);
session_start();
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 2700)) {
// last request was more than 45 min ago
if(isset($_SESSION['id'])){
$connection = mysql_connect('localhost', '******', '*******');
if (!$connection){
die('Database connection failed: ' . mysql_error());
}
$db_select = mysql_select_db('beckerfamily');
if(!$db_select){
die('Could not select database: ' . mysql_error());
}
$query = "UPDATE users SET online='no' WHERE id='{$_SESSION['id']}' LIMIT 1";
$result = mysql_query($query);
if (!$result) {
die("Database query failed: " . mysql_error());
}
}
$_SESSION = array();
if(isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
session_destroy(); // destroy session data in storage
session_unset(); // unset $_SESSION variable for the runtime
if(isset($connection)){
mysql_close($connection);
}
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
?>
Также необходимо иметь session_name('mysessionname');
или я могу просто опустить это, и PHP установит имя сеанса самостоятельно?