国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
2.8KB

  1. <?php
  2. if (!defined('DEDEINC')) exit ('dedebiz');
  3. /**
  4. * Cookie处理助手
  5. *
  6. * @version $id:cookie.helper.php 2023年11月24日 tianya $
  7. * @package DedeBIZ.Helpers
  8. * @copyright Copyright (c) 2022 DedeBIZ.COM
  9. * @license GNU GPL v2 (https://www.dedebiz.com/license)
  10. * @link https://www.dedebiz.com
  11. */
  12. /**
  13. * 设置Cookie记录
  14. *
  15. * @param string $key 键
  16. * @param string $value 值
  17. * @param string $kptime 保持时间
  18. * @param string $pa 保存路径
  19. * @return void
  20. */
  21. if (!function_exists('PutCookie')) {
  22. function PutCookie($key, $value, $kptime = 0, $pa = "/")
  23. {
  24. global $cfg_cookie_encode, $cfg_domain_cookie;
  25. if (version_compare(PHP_VERSION, '7.3.0', '>=')) {
  26. $options = array(
  27. "expires"=>time() + $kptime,
  28. 'path' => $pa,
  29. 'domain' => $cfg_domain_cookie,
  30. 'samesite' => 'None',
  31. 'secure' => true,
  32. );
  33. setcookie($key, $value, $options);
  34. setcookie($key.'__ckMd5', substr(md5($cfg_cookie_encode.$value), 0, 16), $options);
  35. } else {
  36. setcookie($key, $value, time() + $kptime, $pa.'; SameSite=None; Secure', $cfg_domain_cookie);
  37. setcookie($key.'__ckMd5', substr(md5($cfg_cookie_encode.$value), 0, 16), time() + $kptime, $pa.'; SameSite=None; Secure', $cfg_domain_cookie);
  38. }
  39. }
  40. }
  41. /**
  42. * 清除Cookie记录
  43. *
  44. * @param $key 键名
  45. * @return void
  46. */
  47. if (!function_exists('DropCookie')) {
  48. function DropCookie($key)
  49. {
  50. global $cfg_domain_cookie;
  51. if (version_compare(PHP_VERSION, '7.3.0', '>=')) {
  52. $options = array(
  53. "expires"=>time() - 360000,
  54. 'path' => "/",
  55. 'domain' => $cfg_domain_cookie,
  56. 'samesite' => 'None',
  57. 'secure' => true,
  58. );
  59. setcookie($key, "", $options);
  60. setcookie($key.'__ckMd5', "", $options);
  61. } else {
  62. setcookie($key, '', time() - 360000, "/; SameSite=None; Secure", $cfg_domain_cookie);
  63. setcookie($key.'__ckMd5', '', time() - 360000, "/; SameSite=None; Secure", $cfg_domain_cookie);
  64. }
  65. }
  66. }
  67. /**
  68. * 获取Cookie记录
  69. *
  70. * @param $key 键名
  71. * @return string
  72. */
  73. if (!function_exists('GetCookie')) {
  74. function GetCookie($key)
  75. {
  76. global $cfg_cookie_encode;
  77. if (!isset($_COOKIE[$key]) || !isset($_COOKIE[$key.'__ckMd5'])) {
  78. return '';
  79. } else {
  80. if ($_COOKIE[$key.'__ckMd5'] != substr(md5($cfg_cookie_encode.$_COOKIE[$key]), 0, 16)) {
  81. return '';
  82. } else {
  83. return $_COOKIE[$key];
  84. }
  85. }
  86. }
  87. }
  88. ?>