У меня 2 php сайта на одной машине.Первый сайт (устаревшая система) имеет базовую аутентификацию: проверяет, установлено ли значение $_SESSION['user_id']
.Я работаю на втором сайте (на базе Kohana 3.1), который расширит функциональные возможности первого.Оба сайта будут связывать друг друга, поэтому мне нужно разделить сеанс между этими системами.Оба сайта используют одну и ту же базу данных.Пользователи войдут в первый сайт.На моем сайте есть код, который обнаруживает $_SESSION['user_id']
первого, но у меня возникают проблемы с сохранением сеанса с модулем Kohana-Auth.
Первый сайт (старый) проверяетсеанс выглядит так:
<?php
session_start();
if(empty($_SESSION['user_id']))header("Location: index.php?action=3");
... //more dark code
это во всех файлах php ... много файлов.
На моем сайте Kohana у меня есть контроллер, который перед любым действием проверяет сеанс.
<?php
class My_Controller extends Controller_Template {
public function before() {
session_start();
$this->auth = Auth::instance();
if ($this->auth->logged_in()) {
//I have session in the second site... Do I have a session on the first one?
if (!isset($_SESSION['user_id']) || $_SESSION['user_id'] == "") {
//I have no session in the first site... I logout the user in my site
$controller = Request::current()->controller();
if ($controller != 'auth') {
Request::current()->redirect('auth/logout');
}
}
$this->user = ORM::factory('user', $this->auth->get_user()->id);
} else {
//I have no session in the second site... Do I have a session on the first one?
$user_id = isset($_SESSION['user_id']) ? $_SESSION['user_id'] : null;
if (isset($user_id)) {
$user = Model_User::get_user($user_id);
if ($user->loaded()) {
//I have session in the first site... I login the user in my site
$this->auth->force_login($user);
$this->user = ORM::factory('user', $this->auth->get_user()->id);
}
}
if (!$this->auth->logged_in()) {
//I still have no session => redirect to login of the first site
//Request::current()->redirect(...);
echo Debug::vars("BUUUU");
}
}
}
}
Этот код близок к работе: я могу переходить с одного сайта на другой, и пользователь обнаруживается ... но я понял, что когда пользователь перемещается между различными действиями на моем сайте Kohana,Увеличивается «логины» таблицы пользователей.Это означает, что перед любым действием «$this->auth->logged_in()
» равно FALSE
... и это означает, что модуль Auth не сохраняет моего пользователя между действиями и каждый раз выполняет принудительный вход в систему.
Я не знаюНе знаю, что мне делать.
Я хочу обнаружить сеанс с первого сайта, но не хочу входить в систему этого пользователя при каждом нажатии.