$mac .= str_pad(mb_strlen($method['VK_SND_ACC']), 3, '0', STR_PAD_LEFT) . $method['VK_SND_ACC'];
    $mac .= str_pad(mb_strlen($method['VK_SND_NAME']), 3, '0', STR_PAD_LEFT) . $method['VK_SND_NAME'];
    $mac .= str_pad(mb_strlen($method['VK_REF']), 3, '0', STR_PAD_LEFT) . $method['VK_REF'];
    $mac .= str_pad(mb_strlen($method['VK_MSG']), 3, '0', STR_PAD_LEFT) . $method['VK_MSG'];
    $mac .= str_pad(mb_strlen($method['VK_T_DATE']), 3, '0', STR_PAD_LEFT) . $method['VK_T_DATE'];
    $signature_ok = _verify($mac, base64_decode($method['VK_MAC']));
} else {
    if ($_POST['VK_SERVICE'] == '1901') {
        $mac = str_pad(mb_strlen($_POST['VK_SERVICE']), 3, '0', STR_PAD_LEFT) . $_POST['VK_SERVICE'];
        $mac .= str_pad(mb_strlen($_POST['VK_VERSION']), 3, '0', STR_PAD_LEFT) . $_POST['VK_VERSION'];
        $mac .= str_pad(mb_strlen($_POST['VK_SND_ID']), 3, '0', STR_PAD_LEFT) . $_POST['VK_SND_ID'];
        $mac .= str_pad(mb_strlen($_POST['VK_REC_ID']), 3, '0', STR_PAD_LEFT) . $_POST['VK_REC_ID'];
        $mac .= str_pad(mb_strlen($_POST['VK_STAMP']), 3, '0', STR_PAD_LEFT) . $_POST['VK_STAMP'];
        $mac .= str_pad(mb_strlen($_POST['VK_REF']), 3, '0', STR_PAD_LEFT) . $_POST['VK_REF'];
        $mac .= str_pad(mb_strlen($_POST['VK_MSG']), 3, '0', STR_PAD_LEFT) . $_POST['VK_MSG'];
        $signature_ok = _verify($mac, base64_decode($_POST['VK_MAC']));
    } else {
        echo '<!--bad request:' . $method['VK_SERVICE'] . '-->';
        return;
    }
}
if ($signature_ok == false || $signature_ok == 0) {
    echo '<!--signature is bad-->';
    exit;
}
if ($method['VK_SERVICE'] == '1101') {
    $orderInfo = intval($method['VK_REF']);
    /*
    Bank allways sends a GET, but if the client clicks on the buttons to send back to the service provider web page we will receive POST.
    At first, we will receive GET first, but if the client is very fast, or there is some internet communication delay, first will be POST.
    So we need to double check!
Exemplo n.º 2
0
$avalible = false;
$action = $_POST['action'];
if ($action == 'check_username') {
    $u = $_POST['username'];
    _check_username($u, null, $avalible, false);
} else {
    if ($action == 'create_account') {
        $u = $_POST['username'];
        $p = $_POST['password'];
        #_create_account($u, $p, $avalible);
        _check_username($u, $p, $avalible, true);
    } else {
        if ($action == 'login') {
            $u = $_POST['username'];
            $p = $_POST['password'];
            _verify($u, $p);
        }
    }
}
function _check_username($u, $p, $avalible, $create)
{
    $connect = new mysqli("classroom.cs.unc.edu", "cookcb", "krackatoa4", "cookcbdb");
    $result = $connect->query("SELECT count(*) FROM DNDLogin WHERE Username = '******'");
    $row = $result->fetch_row();
    $exists = $row[0];
    if ($exists == 1) {
        echo "<Span class='no'><strong>{$u}</strong> is not available</span>";
        $avalible = false;
    } else {
        echo "<Span class='yes'><strong>{$u}</strong> is available</span>";
        $avalible = true;