server/php/basic/resources/library/utilsFunctions.php
author ymh <ymh.work@gmail.com>
Fri, 22 May 2015 17:48:14 +0200
changeset 442 adb907bba956
permissions -rw-r--r--
add server php example
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
442
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
/**
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 * Generates version 4 UUIDs
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 * from https://github.com/ramsey/uuid/blob/2.8/src/Uuid.php
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 * and http://stackoverflow.com/a/2040279
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 *
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 * @return string
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
 */
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
function genUuid4() {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
    if (function_exists('openssl_random_pseudo_bytes')) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
        $bytes = openssl_random_pseudo_bytes(16);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
    }
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
    else {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
        $bytes = '';
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
        mt_srand(crc32(serialize([microtime(true), 'USER_IP', 'ETC'])));
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
        for ($i = 1; $i <= $length; $i++) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
            $bytes = chr(mt_rand(0, 255)) . $bytes;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
        }
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
    }
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
    $bytes[6] = chr(ord($bytes[6]) & 0x0f | 0x40); // set version to 0100
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
    $bytes[8] = chr(ord($bytes[8]) & 0x3f | 0x80); // set bits 6-7 to 10
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
    return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($bytes), 4));
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
/**
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
 * get page self url
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
 * from http://stackoverflow.com/a/2236887
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
 */
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
function strleft($s1, $s2) { return substr($s1, 0, strpos($s1, $s2)); }
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
function selfURL()
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
{
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
    $s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : "";
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
    $protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
    $port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
    return $protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI'];
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
function selfBaseURL()
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
{
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
    $s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : "";
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
    $protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
    $port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
    return $protocol."://".$_SERVER['SERVER_NAME'].$port.dirname($_SERVER['REQUEST_URI']);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
}