{$var}', '/\{\$([\?\!\|@^~])(\w+)\}/', "mu_HttpVariables"); # (:cookie [name] [value] [args]:) Markup('cookie', '>if', '/\(:cookie\s+(.*?)\s*:\)/i', "mu_HttpVariablesCookie"); # (:session [name] [value] [args]:) Markup('session', '>if', '/\(:session\s+(.*?)\s*:\)/i', "mu_HttpVariablesSession"); function mu_HttpVariables($m) { extract($GLOBALS['MarkupToHTML']); return HttpVariables($pagename, $m[1], $m[2]); } function mu_HttpVariablesCookie($m) { extract($GLOBALS['MarkupToHTML']); return HttpVariablesCookie($pagename, ParseArgs($m[1])); } function mu_HttpVariablesSession($m) { extract($GLOBALS['MarkupToHTML']); return HttpVariablesSession($pagename, ParseArgs($m[1])); } function HttpVariablesCookie($pagename, $args) { $name = HV_PSA($args, 'name'); $val = HV_PSA($args, 'value'); $exp = HV_PSA($args, 'expires'); $path = HV_PSA($args, 'path'); $domain = HV_PSA($args, 'domain'); $sec = HV_PSA($args, 'secure'); $http = HV_PSA($args, 'httponly'); $sargs = $args['']; foreach ($sargs as $arg) { switch ($arg) { case 'secure': $sec = true; break; case 'httponly': $http = true; break; default: if (!$name) $name = $arg; else if (!$val) $val = $arg; break; } } if (!$name) return; if (!$val) $val = null; if (!$exp) $exp = 0; else $exp = strtotime($exp); if (!$path) $path = ''; if (!$domain) $domain = ''; if (!$sec) $sec = false; if (!$http) $http = false; setcookie($name, $val, $exp, $path, $domain, $sec, $http); return; } function HttpVariablesSession($pagename, $args) { $name = $args['name']; $val = $args['value']; $sargs = $args['']; foreach ($sargs as $arg) { if (!$name) $name = $arg; else if (!$val) $val = $arg; } if (!$name) return; session_start(); $_SESSION[$name] = $val; } function HttpVariables($pagename, $type, $var) { global $Charset; switch ($type) { case '?': $val = HV_PSA($_GET, $var); break; case '|': $val = HV_PSA($_POST, $var); break; case '!': $val = HV_PSA($_REQUEST, $var); break; case '@': $val = HV_PSA($_COOKIE, $var); break; case '^': $val = (isset($_GET[$var]) ? $_GET[$var] : (isset($_COOKIE[$var]) ? $_COOKIE[$var] : (( isset($_SESSION) && isset($_SESSION[$var]) ? $_SESSION[$var] : null)))); break; case '~': $val = isset($_SESSION) ? HV_PSA($_SESSION, $var) : null; break; } if (isset($val)) return htmlentities(stripmagic($val), ENT_COMPAT, $Charset); return ""; } ## HttpVariables / PmWiki Safe Access ## (polyfill for null coalescing operator ?? for array access, for PHP versions prior to 7) function HV_PSA($x, $idx) { return isset($x[$idx]) ? $x[$idx] : null; }