forked from UsrSpace-Internal/website
120 lines
2.5 KiB
PHP
120 lines
2.5 KiB
PHP
|
<?php
|
||
|
|
||
|
function store_in_session($key,$value)
|
||
|
{
|
||
|
if (isset($_SESSION))
|
||
|
{
|
||
|
$_SESSION[$key]=$value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function unset_session($key)
|
||
|
{
|
||
|
$_SESSION[$key]=' ';
|
||
|
unset($_SESSION[$key]);
|
||
|
}
|
||
|
|
||
|
function get_from_session($key)
|
||
|
{
|
||
|
if (isset($_SESSION))
|
||
|
{
|
||
|
return $_SESSION[$key];
|
||
|
}
|
||
|
else { return false; } //no session data, no CSRF risk
|
||
|
}
|
||
|
|
||
|
function csrfguard_generate_token($unique_form_name)
|
||
|
{
|
||
|
if (function_exists("hash_algos") and in_array("sha512",hash_algos()))
|
||
|
{
|
||
|
$token=hash("sha512",mt_rand(0,mt_getrandmax()));
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$token=' ';
|
||
|
for ($i=0;$i<128;++$i)
|
||
|
{
|
||
|
$r=mt_rand(0,35);
|
||
|
if ($r<26)
|
||
|
{
|
||
|
$c=chr(ord('a')+$r);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$c=chr(ord('0')+$r-26);
|
||
|
}
|
||
|
$token.=$c;
|
||
|
}
|
||
|
}
|
||
|
store_in_session($unique_form_name,$token);
|
||
|
return $token;
|
||
|
}
|
||
|
|
||
|
function csrfguard_validate_token($unique_form_name,$token_value)
|
||
|
{
|
||
|
$token=get_from_session($unique_form_name);
|
||
|
if ($token===false)
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
elseif ($token===$token_value)
|
||
|
{
|
||
|
$result=true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$result=false;
|
||
|
}
|
||
|
unset_session($unique_form_name);
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
function in_array_field($needle, $needle_field, $haystack, $strict = false) {
|
||
|
if ($strict) {
|
||
|
foreach ($haystack as $item)
|
||
|
if (isset($item[$needle_field]) && $item[$needle_field] === $needle)
|
||
|
return true;
|
||
|
}
|
||
|
else {
|
||
|
foreach ($haystack as $item)
|
||
|
if (isset($item[$needle_field]) && $item[$needle_field] == $needle)
|
||
|
return true;
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
function key_in_array_field($key, $array) {
|
||
|
foreach ($array as $sub_array)
|
||
|
if (array_key_exists($key, $sub_array))
|
||
|
return true;
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
function is_valid_domain_name($domain_name)
|
||
|
{
|
||
|
return (preg_match("/^([a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*$/i", $domain_name) //valid chars check
|
||
|
&& preg_match("/^.{1,253}$/", $domain_name) //overall length check
|
||
|
&& preg_match("/^[^\.]{1,63}(\.[^\.]{1,63})*$/", $domain_name) ); //length of each label
|
||
|
}
|
||
|
|
||
|
function randomAlphaNum($length){
|
||
|
$newRand = "";
|
||
|
while(strlen($newRand) < $length) {
|
||
|
$asciirand = mt_rand(48,122);
|
||
|
if (($asciirand > 57) and ($asciirand < 65)) continue;
|
||
|
if (($asciirand > 90) and ($asciirand < 97)) continue;
|
||
|
$newRand .= chr($asciirand);
|
||
|
}
|
||
|
return $newRand; //spit it out
|
||
|
}
|
||
|
|
||
|
function formatBytes($size, $precision = 2)
|
||
|
{
|
||
|
$base = log($size, 1024);
|
||
|
$suffixes = array('', 'K', 'M', 'G', 'T');
|
||
|
|
||
|
return round(pow(1024, $base - floor($base)), $precision) .' '. $suffixes[floor($base)];
|
||
|
}
|
||
|
|
||
|
?>
|