wordpress - id онлайн пользователя

Discussion in 'PHP' started by people2people, 7 Apr 2020.

  1. people2people

    people2people Banned

    Joined:
    1 Dec 2019
    Messages:
    159
    Likes Received:
    66
    Reputations:
    0
    start_session() - не работает.
    $_SESSION - не работает.
    $_COOKIE - не работает.

    В 2020 году все именно так на php7 и новых серверах (linux, windows).

    ID пользователя присваиваю так:
    Code:
    $visitor_id = rand(1, 1000000).".".str_shuffle(".".'0123456789abcdefghijklmnopqrstuvwxyz').".".rand(1, 1000000);
    
    Использую бесплатный тариф от хостинга https://atspace.com с php7
    Wordpress 5.4 на нем работает на ура.

    Как мне и куда записывать этот $visitor_id , чтобы присвоить его онлайн пользователю, на то время, пока он на сайте просматривает РАЗНЫЕ страницы?
     
    #1 people2people, 7 Apr 2020
    Last edited: 7 Apr 2020
  2. people2people

    people2people Banned

    Joined:
    1 Dec 2019
    Messages:
    159
    Likes Received:
    66
    Reputations:
    0
    Я понял:

    можно идентифицровать пользователя так:
    Code:
    $user_agent = $_SERVER['HTTP_USER_AGENT'];
    
    
    function getOS() {
    
        global $user_agent;
    
        $os_platform  = "Unknown OS Platform";
    
        $os_array     = array(
                              '/windows nt 10/i'      =>  'Windows 10',
                              '/windows nt 6.3/i'     =>  'Windows 8.1',
                              '/windows nt 6.2/i'     =>  'Windows 8',
                              '/windows nt 6.1/i'     =>  'Windows 7',
                              '/windows nt 6.0/i'     =>  'Windows Vista',
                              '/windows nt 5.2/i'     =>  'Windows Server 2003/XP x64',
                              '/windows nt 5.1/i'     =>  'Windows XP',
                              '/windows xp/i'         =>  'Windows XP',
                              '/windows nt 5.0/i'     =>  'Windows 2000',
                              '/windows me/i'         =>  'Windows ME',
                              '/win98/i'              =>  'Windows 98',
                              '/win95/i'              =>  'Windows 95',
                              '/win16/i'              =>  'Windows 3.11',
                              '/macintosh|mac os x/i' =>  'Mac OS X',
                              '/mac_powerpc/i'        =>  'Mac OS 9',
                              '/linux/i'              =>  'Linux',
                              '/ubuntu/i'             =>  'Ubuntu',
                              '/iphone/i'             =>  'iPhone',
                              '/ipod/i'               =>  'iPod',
                              '/ipad/i'               =>  'iPad',
                              '/android/i'            =>  'Android',
                              '/blackberry/i'         =>  'BlackBerry',
                              '/webos/i'              =>  'Mobile'
                        );
    
        foreach ($os_array as $regex => $value)
            if (preg_match($regex, $user_agent))
                $os_platform = $value;
    
        return $os_platform;
    }
    
    function getBrowser() {
    
        global $user_agent;
    
        $browser        = "Unknown Browser";
    
        $browser_array = array(
                                '/msie/i'      => 'Internet Explorer',
                                '/firefox/i'   => 'Firefox',
                                '/safari/i'    => 'Safari',
                                '/chrome/i'    => 'Chrome',
                                '/edge/i'      => 'Edge',
                                '/opera/i'     => 'Opera',
                                '/netscape/i'  => 'Netscape',
                                '/maxthon/i'   => 'Maxthon',
                                '/konqueror/i' => 'Konqueror',
                                '/mobile/i'    => 'Handheld Browser'
                         );
    
        foreach ($browser_array as $regex => $value)
            if (preg_match($regex, $user_agent))
                $browser = $value;
    
        return $browser;
    }
    
    function client_ip(){
       if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
           $ip = $_SERVER['HTTP_CLIENT_IP'];
        } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
           $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
        } else {
           $ip = $_SERVER['REMOTE_ADDR'];
        }
        return $ip;
    }
    
        $user_os        = getOS();
        $user_browser   = getBrowser();
        $client_ip = client_ip();
     
        var_dump($user_os." ".$user_browser." ".$client_ipю." ".php_uname()); // строка идентификации пользователя.
     
    
    Эту строку идентификации пользователя можно записывать в базу данных mysql типа virtual на время нахождения пользователя на сайте...Возможно еще присваивать какой-то идентификатор..

    Походу сотрудники ЦРУ и военные СНГ, РФ, УА закрыли от гражданских $_SESSION и $_COOKIES.....чтобы гражданские не создавали массовые сервисы с трафиком, типа партнерских программ, в которых идет запись id рефералла с помощью 6-24 месячной cookies....чтобы не создавали на слабых vps-серврах сервисы под большую нагрузку...а разрабатывали только маоломощные плагины для cms wordpress, joomla, magento и т.д.
     
  3. winstrool

    winstrool ~~*MasterBlind*~~

    Joined:
    6 Mar 2007
    Messages:
    1,413
    Likes Received:
    910
    Reputations:
    863
    Таким образом, воздействием на заголовки HTTP_* для определения IP, мы можем привести к уязвимости SQLInject, так как, они идут без дополнительной фильтрации/валидации и частенько в различных тулзах, используется вектор на эти заголовки.
     
    _________________________
    #3 winstrool, 8 Apr 2020
    Last edited: 8 Apr 2020
    people2people likes this.
  4. people2people

    people2people Banned

    Joined:
    1 Dec 2019
    Messages:
    159
    Likes Received:
    66
    Reputations:
    0
  5. molemime

    molemime Member

    Joined:
    6 Dec 2017
    Messages:
    53
    Likes Received:
    20
    Reputations:
    0
  6. people2people

    people2people Banned

    Joined:
    1 Dec 2019
    Messages:
    159
    Likes Received:
    66
    Reputations:
    0
    В данном случае, нужно получать id незарегестрированного пользователя, тогда когда он просматривает сайт. Т.е. на разных страницах, id незарегистрированного пользователя должен быть одинаковый. Нужно написать плагин реферальной системы.
     
  7. molemime

    molemime Member

    Joined:
    6 Dec 2017
    Messages:
    53
    Likes Received:
    20
    Reputations:
    0
    setcookie - вешаешь идентификатор пользователю, далее присваеваешь этот индетификатор пригласившему примерно так, можно использовать одно название поля с множеством значений.
     
  8. people2people

    people2people Banned

    Joined:
    1 Dec 2019
    Messages:
    159
    Likes Received:
    66
    Reputations:
    0
    Cookies и session вообще не работают в php7.
     
  9. molemime

    molemime Member

    Joined:
    6 Dec 2017
    Messages:
    53
    Likes Received:
    20
    Reputations:
    0
    Не замечал такого, ответ из google:
    https://qna.habr.com/q/413839
     
  10. people2people

    people2people Banned

    Joined:
    1 Dec 2019
    Messages:
    159
    Likes Received:
    66
    Reputations:
    0