За последние 24 часа нас посетили 31979 программистов и 1363 робота. Сейчас ищут 857 программистов ...

Не работает присвоении сессии

Тема в разделе "PHP для новичков", создана пользователем Danil005, 29 июл 2017.

  1. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Module.class.php
    PHP:
    1. <?
    2. public function add_session($array) {
    3.       foreach ($array as $key => $value) {
    4.          $_SESSION[$key]=$value;
    5.       }
    6. }
    7. ?>
    Login.class.php
    PHP:
    1. class Login extends \Core {
    2.   public function auth($array) {
    3.       if( \Checker::Required($array) !== false ) {
    4.           if( \Checker::DataBase_Validation_check(['login'=>$array['login'], 'password'=>$array['password']]) !== false ) {
    5.               $salt=\OGenerator::salt();
    6.              if( !self::$db->getOne('SELECT ?n FROM ?n WHERE ?n=?s', 'username', 'session', 'username', $array['login']) )
    7.                 self::$db->query('INSERT ?n(?n,?n,?n) VALUES(?s,?s,?s)', 'session', 'username', 'salt', 'timeout', $array['login'], $salt, time()+3600);
    8.               else
    9.                   self::$db->query('UPDATE ?n SET ?u WHERE ?n=?s', 'session', ['salt'=>$salt, 'timeout'=>time()+3600], 'username', $array['login']);
    10.  
    11.               self::add_session([
    12.                   'username'=>base64_encode($array['login']),
    13.                   'password'=>base64_encode(self::en_password($array['password'])),
    14.                   'timeout'=>base64_encode(time()+3600),
    15.                   'salt'=>base64_encode($salt)
    16.               ]);
    17.              // $_SESSION['username']='123';
    18.              // var_dump($_SESSION);
    19.           }
    20.       }
    21.   }
    22. }
    До self::add_session алгоритм доходит, все что сверху, все работает, а вот присвоения к сессии нет работает.
    Еще вот есть .htaccess:
    Код (Text):
    1. RewriteBase /
    2. RewriteEngine on
    3. php_flag display_errors on
    4. php_flag display_startup_errors on
    5. php_flag session.use_only_cookies on
    6.  
    7. AddDefaultCharset UTF-8
    8. RewriteCond %{REQUEST_FILENAME} !-d
    9. RewriteCond %{REQUEST_FILENAME}\.php -f
    10. RewriteRule ^(.*)$ $1.php
    11.  
    12. RewriteCond %{HTTP_HOST} ^www\.(.*)$
    13. RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
    14.  
    15. RewriteRule ^join /pages/auth/register.php
    16. RewriteRule ^login /pages/auth/login.php
     
    #1 Danil005, 29 июл 2017
    Последнее редактирование: 29 июл 2017
  2. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Есть, как минимум, две причины:
    1. Метод вызывается как статический, хотя таковым не является
    2. Методы описаны в разных классах, между которыми нет наследования. При обращении через self метод не может быть найден.

    Что говорят логи ошибок?
     
  3. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Вызываю как статический, потому что this не работает.
    Проблема была намного банальней и закоючалась не в классах вовсе, я просто забыл вызвать сессию: session_start();