11 $_SESSION[
'csrf_token'] = generateCsrf();
18function sessionExists() {
19 return session_status() === PHP_SESSION_ACTIVE;
26function generateCsrf() {
27 if (version_compare(phpversion(),
'7.0.0',
'>=')) {
28 $random = generateRandom();
29 if($random !==
false)
return $random;
32 if (function_exists(
'mcrypt_create_iv')) {
33 return generateMcrypt();
36 return generateOpenssl();
44function generateRandom() {
46 return bin2hex(random_bytes(32));
47 }
catch (Exception $e) {
56function generateMcrypt() {
57 return bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));
64function generateOpenssl() {
65 return bin2hex(openssl_random_pseudo_bytes(32));
75 if(!sessionExists()) {
79 if(!array_key_exists(
'csrf_token', $_SESSION)) {
83 return $_SESSION[
'csrf_token'];
90function getCsrfField() {
91 return sprintf(
"<input type=\"hidden\" name=\"csrf_token\" value=\"%s\">", getCsrf());
99function verifyCsrf($csrf_token) {
100 $current_csrf = getCsrf();
102 if(function_exists(
'hash_equals')) {
103 return hash_equals($current_csrf, $csrf_token);
106 return $current_csrf === $csrf_token;
113function verifyCsrfPost() {
114 return (isset($_POST[
'csrf_token']) && verifyCsrf($_POST[
'csrf_token']));