server/php/basic/resources/library/utilsFunctions.php
author durandn
Thu, 21 Apr 2016 15:18:19 +0200
changeset 605 13d355fd09bf
parent 442 adb907bba956
permissions -rw-r--r--
updated uri to allow optional trailing slash on single resource URIs (django automatic redirects don't carry over the Authorization header that can sometimes be needed, for instance with OAuth)
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
}