<?php session_start(); include_once "../common.php"; $supportCoins = ['btc/main'=>"Bitcoin Mainnet", 'btc/test3'=>"Bitcoin Testnet3", 'dash/main'=>"Dash Mainnet", 'doge/main'=>"Dogecoin Mainnet", 'ltc/main'=>"Litecoin Mainnet",'bcy/test'=>"Blockcypher Testnet"]; $hasResult = false; if ($_SERVER['REQUEST_METHOD'] == 'POST') { try { if(md5($_POST['captcha']) != $_SESSION['CAPTCHA_FORM1']){ throw new Exception("CAPTCHA verification failed."); } else if (!isset($supportCoins[$_POST['network']])) { throw new Exception('Network not found.'); } else { $networkName = $_POST['network']; } $dt = []; if (strlen($_POST['height']) > 0) { if (!is_numeric($_POST['height'])) { throw new Exception('Invalid height value.'); } $toHeight = (int)$_POST['height'];; $fromHeight = $toHeight - 11; } else { $url = "https://api.blockcypher.com/v1/{$networkName}"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $chain = curl_exec($ch); $chain = json_decode($chain,true); if ($chain['error']) { throw new Exception("URL: {$url}, Error: {$chain['error']}."); } curl_close($ch); $fromHeight = ($chain['height'] + 1) - 11; $toHeight = $chain['height']; } foreach(range($fromHeight,$toHeight) as $newHeight) { $url = "https://api.blockcypher.com/v1/{$networkName}/blocks/{$newHeight}?txstart=1&limit=1"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $block = curl_exec($ch); $block = json_decode($block,true); if ($block['error']) { throw new Exception("URL: {$url}, Error: {$block['error']}."); } curl_close($ch); $blockTime = date("Y-m-d H:i:s", strtotime($block['time'])); $dt[] = $blockTime; } sort($dt); $mtp = $dt[$median = 5]; $hasResult = true; if ($_POST['ajax'] == '1') { die(json_encode(['mtp'=>$mtp. " (UTC 0)", 'height'=>$toHeight ])); } } catch (Exception $e) { $errmsg .= "Problem found. " . $e->getMessage(); } } include_once("html_iframe_header.php"); if ($errmsg) { ?> <div class="alert alert-danger"> <strong>Error!</strong><br/><?php echo $errmsg?> </div> <?php } if ($hasResult) { ?> <div class="table-responsive"> <table border=0 class='table'> <tr><td>Median Time Past</td><td><?php echo $mtp. " (UTC 0)";?></td></tr> <tr><td>Block Height</td><td><?php echo $toHeight;?></td></tr> </table> </div> <?php } ?> <form action='' method='post'> <div class="form-group"> <label for="network">Network:</label> <select id="network" name="network" class="form-control" > <?php foreach($supportCoins as $k=>$v) { echo "<option value='{$k}'".($k == $_POST['network'] ? " selected": "").">{$v}</option>"; } ?> </select> </div> <div class="form-group"> <label for="height">Block Height:</label> <input class="form-control" type='text' name='height' id='height' value='<?php echo $_POST['height']?>'> Put blank if you want system to calculate current chain's MTP. </div> <div class="form-group"> <label for="captcha">CAPTCHA:</label> <img style='border:1px solid black' src='../verificationimage.php?key=CAPTCHA_FORM1'/> <input name="captcha" type="captcha" class="form-control" placeholder="CAPTCHA" id="captcha" value=""> </div> <input type='submit' class="btn btn-success btn-block"/> </form> <?php include_once("html_iframe_footer.php");