Module.class.php PHP: <? public function add_session($array) { foreach ($array as $key => $value) { $_SESSION[$key]=$value; } } ?> Login.class.php PHP: class Login extends \Core { public function auth($array) { if( \Checker::Required($array) !== false ) { if( \Checker::DataBase_Validation_check(['login'=>$array['login'], 'password'=>$array['password']]) !== false ) { $salt=\OGenerator::salt(); if( !self::$db->getOne('SELECT ?n FROM ?n WHERE ?n=?s', 'username', 'session', 'username', $array['login']) ) self::$db->query('INSERT ?n(?n,?n,?n) VALUES(?s,?s,?s)', 'session', 'username', 'salt', 'timeout', $array['login'], $salt, time()+3600); else self::$db->query('UPDATE ?n SET ?u WHERE ?n=?s', 'session', ['salt'=>$salt, 'timeout'=>time()+3600], 'username', $array['login']); self::add_session([ 'username'=>base64_encode($array['login']), 'password'=>base64_encode(self::en_password($array['password'])), 'timeout'=>base64_encode(time()+3600), 'salt'=>base64_encode($salt) ]); // $_SESSION['username']='123'; // var_dump($_SESSION); } } } } До self::add_session алгоритм доходит, все что сверху, все работает, а вот присвоения к сессии нет работает. Еще вот есть .htaccess: Код (Text): RewriteBase / RewriteEngine on php_flag display_errors on php_flag display_startup_errors on php_flag session.use_only_cookies on AddDefaultCharset UTF-8 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301] RewriteRule ^join /pages/auth/register.php RewriteRule ^login /pages/auth/login.php
Есть, как минимум, две причины: 1. Метод вызывается как статический, хотя таковым не является 2. Методы описаны в разных классах, между которыми нет наследования. При обращении через self метод не может быть найден. Что говорят логи ошибок?
Вызываю как статический, потому что this не работает. Проблема была намного банальней и закоючалась не в классах вовсе, я просто забыл вызвать сессию: session_start();