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 , чтобы присвоить его онлайн пользователю, на то время, пока он на сайте просматривает РАЗНЫЕ страницы?
Я понял: можно идентифицровать пользователя так: 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 и т.д.
Таким образом, воздействием на заголовки HTTP_* для определения IP, мы можем привести к уязвимости SQLInject, так как, они идут без дополнительной фильтрации/валидации и частенько в различных тулзах, используется вектор на эти заголовки.
WP хорошо тем, что многое уже написано, вот пример того, что требуется. https://wp-kama.ru/function/get_user_by
В данном случае, нужно получать id незарегестрированного пользователя, тогда когда он просматривает сайт. Т.е. на разных страницах, id незарегистрированного пользователя должен быть одинаковый. Нужно написать плагин реферальной системы.
setcookie - вешаешь идентификатор пользователю, далее присваеваешь этот индетификатор пригласившему примерно так, можно использовать одно название поля с множеством значений.
Решение найдено, нужно стартовать сессии так в php7: Code: @session_cache_limiter('private, must-revalidate'); //private_no_expire @session_cache_expire(0); @session_start(); https://wordpress.stackexchange.com/questions/48279/php-session-is-not-work-in-wordpress