fork(2) download
  1. <?php
  2.  
  3. // Copyright (c) 2013 Land of Bitcoin http://w...content-available-to-author-only...n.com/
  4. // Feel free to modify anything or remove banners as long as you keep the footer line unchanged.
  5. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
  6. // Donations greatly appreciated: 1MiCRoXT5gFtGZLSmW6efAx968WAKvD5xz
  7.  
  8. // INSTALLATION:
  9. // 1. Set the config values below.
  10. // 2. Upload the index.php and the Microwallet.php files.
  11. // 3. Done, ready to use. You can test it with a Bitcoin address, for example with or donate address: 1MiCRoXT5gFtGZLSmW6efAx968WAKvD5xz
  12.  
  13. /*** CONFIG ***/
  14. $faucetName = 'Microfaucet';
  15. $faucetSlogan = 'Awesome Bitcoin faucet!';
  16. $faucetBackgroundColor = 'white';
  17. $faucetTextColor = 'black';
  18. $faucetDonateBitcoinAddress = '';
  19.  
  20. // How often can the users claim rewards in minutes, 180 = every 3 hours
  21. $intervalInMinutes = 180;
  22.  
  23. // List of rewards in satoshi, 1 satoshi = 0.00000001 BTC.
  24. $rewards = array(
  25. 500,
  26. 400,
  27. 300,
  28. 200,
  29. 100,
  30. );
  31.  
  32. // Display the faucet balance or hide it? true or false
  33. $displayFaucetBalance = false;
  34.  
  35. // Enter MySQL infos
  36. $mysqlHost = 'localhost';
  37. $mysqlUsername = '';
  38. $mysqlPassword = '';
  39. $mysqlDatabase = 'microfaucet';
  40.  
  41. // Get your Microwallet API key from here: https://w...content-available-to-author-only...t.org/api
  42. $microwalletApiKey = '';
  43.  
  44. // CHOOSE A CAPTCHA, you need to fill out recaptha API keys for recaptcha OR Solvemedia API keys for Solvemedia captcha, no need to fill out both.
  45. // If you choose recaptcha: get your reCAPTCHA API keys from here: https://www.google.com/recaptcha/
  46. $recaptchaPublicKey = '';
  47. $recaptchaPrivateKey = '';
  48.  
  49. // If you choose solvemedia: get your Solve Media API keys here: http://s...content-available-to-author-only...a.com/publishers/
  50. $solvemediaChallengeKey = '';
  51. $solvemediaVerificationKey = '';
  52.  
  53. // The HTML is at the end of this file, scroll down, easy to customize.
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62. /************************/
  63. /*** APPLICATION CODE ***/
  64. /************************/
  65. error_reporting(0);
  66.  
  67. if (empty($microwalletApiKey) || ((empty($recaptchaPublicKey) || empty($recaptchaPrivateKey)) && (empty($solvemediaChallengeKey) || empty($solvemediaVerificationKey)))) {
  68. echo 'Missing API keys, check the settings in the index.php.';
  69. exit;
  70. }
  71. $db = mysqli_connect($mysqlHost, $mysqlUsername, $mysqlPassword, $mysqlDatabase);
  72. if (!$db) {
  73. echo 'Can\'t connect to MySQL, check the settings in the index.php. Error: ' . mysqli_connect_error();
  74. exit;
  75. }
  76. mysqli_set_charset($db, 'latin1');
  77.  
  78. $result = mysqli_query($db, "select * from microfaucet_settings where name = 'faucet_balance'");
  79. if (!$result && mysqli_errno($db) === 1146) {
  80. $query = "DROP TABLE IF EXISTS `microfaucet_settings`";
  81. mysqli_query($db, $query);
  82. $query = "CREATE TABLE IF NOT EXISTS `microfaucet_settings` (`id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(45) NOT NULL, `value` VARCHAR(45) NOT NULL, PRIMARY KEY (`id`)) ENGINE = MyISAM DEFAULT CHARACTER SET = latin1 COLLATE = latin1_swedish_ci";
  83. mysqli_query($db, $query);
  84. $query = "INSERT INTO `microfaucet_settings` (`name`, `value`) VALUES ('faucet_balance', 'N/A|1')";
  85. mysqli_query($db, $query);
  86. $query = "DROP TABLE IF EXISTS `microfaucet_users`";
  87. mysqli_query($db, $query);
  88. $query = "CREATE TABLE IF NOT EXISTS `microfaucet_users` (`id` INT NOT NULL AUTO_INCREMENT, `username` VARCHAR(45) NOT NULL, `ip` INT NOT NULL, `claimed_at` INT NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `username_UNIQUE` (`username` ASC)) ENGINE = MyISAM DEFAULT CHARACTER SET = latin1 COLLATE = latin1_swedish_ci";
  89. mysqli_query($db, $query);
  90. header('Location: index.php');
  91. exit;
  92. }
  93. $time = time();
  94.  
  95. if ($displayFaucetBalance) {
  96. $faucetBalance = mysqli_fetch_assoc($result);
  97. list($faucetBalance, $faucetBalanceFetchedAt) = explode('|', $faucetBalance['value']);
  98. if ($faucetBalanceFetchedAt + 10 * 60 < $time) {
  99. $faucetBalance = @file_get_contents('https://w...content-available-to-author-only...t.org/api/v1/balance?api_key=' . rawurlencode($microwalletApiKey));
  100. $faucetBalance = json_decode($faucetBalance);
  101. if ($faucetBalance && isset($faucetBalance->balance_bitcoin)) {
  102. $faucetBalance = $faucetBalance->balance_bitcoin . ' BTC';
  103. } else {
  104. $faucetBalance = 'N/A';
  105. }
  106. $escapedValue = mysqli_real_escape_string($db, $faucetBalance . '|' . $time);
  107. $query = "update microfaucet_settings set value = '$escapedValue' where name = 'faucet_balance'";
  108. mysqli_query($db, $query);
  109. }
  110. }
  111.  
  112. $captchaSolved = false;
  113. $recaptcha = false;
  114. if (!empty($recaptchaPublicKey) && !empty($recaptchaPrivateKey)) {
  115. $recaptcha = true;
  116. }
  117. $result = '';
  118. $resultHtml = '';
  119. $intervalH = floor($intervalInMinutes / 60);
  120. if ($intervalH) {
  121. $interval = $intervalH . ' hours';
  122. }
  123. $intervalM = $intervalInMinutes - $intervalH * 60;
  124. if ($intervalM) {
  125. $interval .= ($intervalH ? ' and ' : '') . $intervalM . ' mins';
  126. }
  127. $ip = $_SERVER['REMOTE_ADDR'];
  128. if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  129. if ($recaptcha) {
  130. $captchaChallange = $_POST['recaptcha_challenge_field'];
  131. $captchaResponse = $_POST['recaptcha_response_field'];
  132. } else {
  133. $captchaChallange = $_POST['adcopy_challenge'];
  134. $captchaResponse = $_POST['adcopy_response'];
  135. }
  136. if (!empty($_POST['username']) && !empty($captchaChallange) && !empty($captchaResponse)) {
  137. if (!preg_match('/[^A-Za-z0-9\.\+\-\_\@]/', $_POST['username'])) {
  138. $escapedUsername = mysqli_real_escape_string($db, $_POST['username']);
  139. $escapedIp = mysqli_real_escape_string($db, ip2long($ip));
  140. $result = mysqli_query($db, "select * from microfaucet_users where username = '$escapedUsername' or ip = '$escapedIp' order by claimed_at desc");
  141. if ($result) {
  142. $row = mysqli_fetch_assoc($result);
  143. if ($row === null || $row['claimed_at'] <= time() - ($intervalInMinutes * 60)) {
  144. if ($recaptcha) {
  145. $response = @file('https://www.google.com/recaptcha/api/verify?privatekey=' . $recaptchaPrivateKey . '&challenge=' . rawurlencode($captchaChallange). '&response=' . rawurlencode($captchaResponse) . '&remoteip=' . $ip);
  146. } else {
  147. $response = @file('http://v...content-available-to-author-only...a.com/papi/verify?privatekey=' . $solvemediaVerificationKey . '&challenge=' . rawurlencode($captchaChallange) . '&response=' . rawurlencode($captchaResponse) . '&remoteip=' . $ip);
  148. }
  149. if (isset($response[0]) && trim($response[0]) === 'true') {
  150. $captchaSolved = true;
  151. require_once 'Microwallet.php';
  152. $microwallet = new Microwallet($microwalletApiKey);
  153. $amount = $rewards[mt_rand(0, count($rewards) - 1)];
  154. $result = $microwallet->send($_POST['username'], $amount);
  155. $resultHtml = $result['html'];
  156. if ($result['success']) {
  157. $escapedClaimedAt = mysqli_real_escape_string($db, time());
  158. $result = mysqli_query($db, "insert into microfaucet_users (username, ip, claimed_at) values ('$escapedUsername', '$escapedIp', '$escapedClaimedAt')");
  159. if (!$result && mysqli_errno($db) === 1062) {
  160. mysqli_query($db, "update microfaucet_users set ip = '$escapedIp', claimed_at = '$escapedClaimedAt' where username = '$escapedUsername'");
  161. }
  162. }
  163. } else {
  164. $resultHtml = '<div class="alert alert-danger">Invalid captcha, try again!</div>';
  165. }
  166. } else {
  167. $waitingTime = ceil(($row['claimed_at'] - (time() - ($intervalInMinutes * 60))) / 60);
  168. $resultHtml = '<div class="alert alert-danger">You have to wait ' . $waitingTime . ' minutes before claiming again!</div>';
  169. }
  170. } else {
  171. $resultHtml = '<div class="alert alert-danger">An error occured.</div>';
  172. }
  173. } else {
  174. $resultHtml = '<div class="alert alert-danger">Invalid address or username!</div>';
  175. }
  176. } else {
  177. $resultHtml = '<div class="alert alert-danger">Missing captcha, address or username, try again!</div>';
  178. }
  179. }
  180. /*******************************/
  181. /*** END OF APPLICATION CODE ***/
  182. /*******************************/
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191. /************/
  192. /*** HTML ***/
  193. /************/
  194. ?>
  195. <!doctype html>
  196. <html>
  197. <head>
  198. <meta charset="UTF-8"/>
  199. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  200. <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  201. <title><?php echo htmlspecialchars($faucetName); ?></title>
  202. <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.min.css">
  203. <style>
  204. body {
  205. background: <?php echo $faucetBackgroundColor; ?>;
  206. color: <?php echo $faucetTextColor; ?>;
  207. }
  208.  
  209. .alert {
  210. font-weight: bold;
  211. text-align: center;
  212. }
  213.  
  214. .faucet {
  215. margin: 20px 0;
  216. }
  217.  
  218. h5 {
  219. font-weight: bold;
  220. }
  221.  
  222. /* Solvemedia captcha fix. */
  223. #adcopy-outer {
  224. -moz-box-sizing: content-box;
  225. -webkit-box-sizing: content-box;
  226. box-sizing: content-box;
  227. }
  228. </style>
  229. </head>
  230. <body>
  231.  
  232. <div class="container">
  233. <h1 class="text-center"><?php echo htmlspecialchars($faucetName); ?></h1>
  234. <h4 class="text-center text-muted"><?php echo htmlspecialchars($faucetSlogan); ?></h4>
  235. <hr />
  236. <div class="row faucet">
  237. <div class="col-sm-3">
  238. <h3 class="text-center">Rewards here</h3>
  239. <hr />
  240. <?php foreach ($rewards as $reward): ?>
  241. <h5 class="text-center"><?php echo htmlspecialchars($reward); ?> satoshi</h5>
  242. <?php endforeach; ?>
  243. <hr />
  244. <h5 class="text-center">Claim every <?php echo htmlspecialchars($interval); ?>!</h5>
  245. <hr />
  246. <center><div style="width: 200px; height: 200px; background: #DDD;">Adspace</div></center>
  247. </div>
  248. <div class="col-sm-6">
  249. <?php if (!empty($faucetDonateBitcoinAddress)): ?>
  250. <h4 class="text-center">Donate bitcoins to keep the faucet alive:<br /><?php echo htmlspecialchars($faucetDonateBitcoinAddress); ?></h4>
  251. <hr />
  252. <?php endif; ?>
  253. <center><div style="width: 468px; height: 60px; background: #DDD;">Adspace</div></center>
  254. <hr />
  255. <?php if ($displayFaucetBalance): ?>
  256. <h4 class="text-center">Faucet balance: <?php echo htmlspecialchars($faucetBalance); ?></h4>
  257. <hr />
  258. <?php endif; ?>
  259. <?php echo $resultHtml; ?>
  260. <?php if ($captchaSolved): ?>
  261. <div class="text-center"><a class="btn btn-primary btn-lg" href="">Reload</a></div>
  262. <?php else: ?>
  263. <h4 class="text-center">Enter your Bitcoin address, email or <a target="_blank" href="https://w...content-available-to-author-only...t.org/">Microwallet.org</a> username</h4>
  264. <form action="" method="POST">
  265. <div class="form-group">
  266. <input class="form-control input-lg" type="text" name="username" id="username" value="<?php echo isset($_POST['username']) ? htmlspecialchars($_POST['username']) : ''; ?>" placeholder="Bitcoin address, email or Microwallet.org username" />
  267. </div>
  268. <div class="form-group">
  269. <?php if ($recaptcha): ?>
  270. <center><script type="text/javascript" src="https://www.google.com/recaptcha/api/challenge?k=<?php echo htmlspecialchars($recaptchaPublicKey); ?>"></script></center>
  271. <?php else: ?>
  272. <center><script type="text/javascript" src="http://a...content-available-to-author-only...a.com/papi/challenge.script?k=<?php echo htmlspecialchars($solvemediaChallengeKey); ?>"></script></center>
  273. <?php endif; ?>
  274. </div>
  275. <div class="form-group">
  276. <input class="form-control input-lg btn-success" type="submit" value="Claim reward!" />
  277. </div>
  278. </form>
  279. <?php endif; ?>
  280. <hr />
  281. <center><div style="width: 468px; height: 60px; background: #DDD;">Adspace</div></center>
  282. <hr />
  283. <center><iframe src="http://a...content-available-to-author-only...n.com/microfaucet-468/" scrolling="no" style="width: 468px; height: 60px; border: 0; padding:0; overflow: hidden;" allowtransparency="true"></iframe></center>
  284. </div>
  285. <div class="col-sm-3">
  286. <h5 class="text-center">My favorite links</h5>
  287. <p class="text-center"><a target="_blank" href="http://b...content-available-to-author-only...n.org/">Bitcoin.org</a></p>
  288. <p class="text-center"><a target="_blank" href="https://b...content-available-to-author-only...k.org/">Bitcointalk</a></p>
  289. <p class="text-center"><a target="_blank" href="http://w...content-available-to-author-only...n.com/">Land of Bitcoin</a></p>
  290. <hr />
  291. <center><div style="width: 200px; height: 200px; background: #DDD;">Adspace</div></center>
  292. <hr />
  293. <center><iframe src="http://a...content-available-to-author-only...n.com/microfaucet-200/" scrolling="no" style="width: 200px; height: 200px; border: 0; padding:0; overflow: hidden;" allowtransparency="true"></iframe></center>
  294. </div>
  295. </div>
  296. <p class="text-center">Powered by <a target="_blank" href="https://w...content-available-to-author-only...t.org/">Microwallet</a>. Get <a target="_blank" href="http://w...content-available-to-author-only...n.com/">free bitcoins on Land of Bitcoin</a>!</p>
  297. </div>
  298.  
  299. </body>
  300. </html>
  301.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:1: error: class, interface, or enum expected
<?php
^
Main.java:14: error: unclosed character literal
$faucetName = 'Microfaucet';
              ^
Main.java:14: error: unclosed character literal
$faucetName = 'Microfaucet';
                          ^
Main.java:15: error: unclosed character literal
$faucetSlogan = 'Awesome Bitcoin faucet!';
                ^
Main.java:15: error: unclosed character literal
$faucetSlogan = 'Awesome Bitcoin faucet!';
                                        ^
Main.java:16: error: unclosed character literal
$faucetBackgroundColor = 'white';
                         ^
Main.java:16: error: unclosed character literal
$faucetBackgroundColor = 'white';
                               ^
Main.java:17: error: unclosed character literal
$faucetTextColor = 'black';
                   ^
Main.java:17: error: unclosed character literal
$faucetTextColor = 'black';
                         ^
Main.java:18: error: empty character literal
$faucetDonateBitcoinAddress = '';
                              ^
Main.java:18: error: unclosed character literal
$faucetDonateBitcoinAddress = '';
                               ^
Main.java:24: error: class, interface, or enum expected
$rewards = array(
^
Main.java:33: error: class, interface, or enum expected
$displayFaucetBalance = false;
^
Main.java:36: error: class, interface, or enum expected
$mysqlHost = 'localhost';
^
Main.java:36: error: unclosed character literal
$mysqlHost = 'localhost';
             ^
Main.java:36: error: unclosed character literal
$mysqlHost = 'localhost';
                       ^
Main.java:37: error: empty character literal
$mysqlUsername = '';
                 ^
Main.java:37: error: unclosed character literal
$mysqlUsername = '';
                  ^
Main.java:38: error: empty character literal
$mysqlPassword = '';
                 ^
Main.java:38: error: unclosed character literal
$mysqlPassword = '';
                  ^
Main.java:39: error: unclosed character literal
$mysqlDatabase = 'microfaucet';
                 ^
Main.java:39: error: unclosed character literal
$mysqlDatabase = 'microfaucet';
                             ^
Main.java:42: error: empty character literal
$microwalletApiKey = '';
                     ^
Main.java:42: error: unclosed character literal
$microwalletApiKey = '';
                      ^
Main.java:46: error: empty character literal
$recaptchaPublicKey = '';
                      ^
Main.java:46: error: unclosed character literal
$recaptchaPublicKey = '';
                       ^
Main.java:47: error: empty character literal
$recaptchaPrivateKey = '';
                       ^
Main.java:47: error: unclosed character literal
$recaptchaPrivateKey = '';
                        ^
Main.java:50: error: empty character literal
$solvemediaChallengeKey = '';
                          ^
Main.java:50: error: unclosed character literal
$solvemediaChallengeKey = '';
                           ^
Main.java:51: error: empty character literal
$solvemediaVerificationKey = '';
                             ^
Main.java:51: error: unclosed character literal
$solvemediaVerificationKey = '';
                              ^
Main.java:67: error: class, interface, or enum expected
if (empty($microwalletApiKey) || ((empty($recaptchaPublicKey) || empty($recaptchaPrivateKey)) && (empty($solvemediaChallengeKey) || empty($solvemediaVerificationKey)))) {
^
Main.java:68: error: unclosed character literal
    echo 'Missing API keys, check the settings in the index.php.';
         ^
Main.java:68: error: unclosed character literal
    echo 'Missing API keys, check the settings in the index.php.';
                                                                ^
Main.java:70: error: class, interface, or enum expected
}
^
Main.java:72: error: class, interface, or enum expected
if (!$db) {
^
Main.java:73: error: unclosed character literal
    echo 'Can\'t connect to MySQL, check the settings in the index.php. Error: ' . mysqli_connect_error();
         ^
Main.java:73: error: illegal character: \92
    echo 'Can\'t connect to MySQL, check the settings in the index.php. Error: ' . mysqli_connect_error();
             ^
Main.java:73: error: unclosed character literal
    echo 'Can\'t connect to MySQL, check the settings in the index.php. Error: ' . mysqli_connect_error();
              ^
Main.java:73: error: unclosed character literal
    echo 'Can\'t connect to MySQL, check the settings in the index.php. Error: ' . mysqli_connect_error();
                                                                               ^
Main.java:74: error: class, interface, or enum expected
    exit;
    ^
Main.java:75: error: class, interface, or enum expected
}
^
Main.java:76: error: unclosed character literal
mysqli_set_charset($db, 'latin1');
                        ^
Main.java:76: error: unclosed character literal
mysqli_set_charset($db, 'latin1');
                               ^
Main.java:78: error: class, interface, or enum expected
$result = mysqli_query($db, "select * from microfaucet_settings where name = 'faucet_balance'");
^
Main.java:79: error: class, interface, or enum expected
if (!$result && mysqli_errno($db) === 1146) {
^
Main.java:81: error: class, interface, or enum expected
    mysqli_query($db, $query);
    ^
Main.java:82: error: class, interface, or enum expected
    $query = "CREATE  TABLE IF NOT EXISTS `microfaucet_settings` (`id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(45) NOT NULL,  `value` VARCHAR(45) NOT NULL,  PRIMARY KEY (`id`)) ENGINE = MyISAM DEFAULT CHARACTER SET = latin1 COLLATE = latin1_swedish_ci";
    ^
Main.java:83: error: class, interface, or enum expected
    mysqli_query($db, $query);
    ^
Main.java:84: error: class, interface, or enum expected
    $query = "INSERT INTO `microfaucet_settings` (`name`, `value`) VALUES ('faucet_balance', 'N/A|1')";
    ^
Main.java:85: error: class, interface, or enum expected
    mysqli_query($db, $query);
    ^
Main.java:86: error: class, interface, or enum expected
    $query = "DROP TABLE IF EXISTS `microfaucet_users`";
    ^
Main.java:87: error: class, interface, or enum expected
    mysqli_query($db, $query);
    ^
Main.java:88: error: class, interface, or enum expected
    $query = "CREATE  TABLE IF NOT EXISTS `microfaucet_users` (`id` INT NOT NULL AUTO_INCREMENT, `username` VARCHAR(45) NOT NULL, `ip` INT NOT NULL, `claimed_at` INT NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `username_UNIQUE` (`username` ASC)) ENGINE = MyISAM DEFAULT CHARACTER SET = latin1 COLLATE = latin1_swedish_ci";
    ^
Main.java:89: error: class, interface, or enum expected
    mysqli_query($db, $query);
    ^
Main.java:90: error: class, interface, or enum expected
    header('Location: index.php');
    ^
Main.java:90: error: unclosed character literal
    header('Location: index.php');
           ^
Main.java:90: error: unclosed character literal
    header('Location: index.php');
                               ^
Main.java:91: error: class, interface, or enum expected
    exit;
    ^
Main.java:92: error: class, interface, or enum expected
}
^
Main.java:95: error: class, interface, or enum expected
if ($displayFaucetBalance) {
^
Main.java:97: error: class, interface, or enum expected
    list($faucetBalance, $faucetBalanceFetchedAt) = explode('|', $faucetBalance['value']);
    ^
Main.java:97: error: unclosed character literal
    list($faucetBalance, $faucetBalanceFetchedAt) = explode('|', $faucetBalance['value']);
                                                                                ^
Main.java:97: error: unclosed character literal
    list($faucetBalance, $faucetBalanceFetchedAt) = explode('|', $faucetBalance['value']);
                                                                                      ^
Main.java:98: error: class, interface, or enum expected
    if ($faucetBalanceFetchedAt + 10 * 60 < $time) {
    ^
Main.java:99: error: unclosed character literal
        $faucetBalance = @file_get_contents('https://www.microwallet.org/api/v1/balance?api_key=' . rawurlencode($microwalletApiKey));
                                            ^
Main.java:99: error: class, interface, or enum expected
        $faucetBalance = @file_get_contents('https://www.microwallet.org/api/v1/balance?api_key=' . rawurlencode($microwalletApiKey));
                                              ^
Main.java:101: error: class, interface, or enum expected
        if ($faucetBalance && isset($faucetBalance->balance_bitcoin)) {
        ^
Main.java:102: error: unclosed character literal
            $faucetBalance = $faucetBalance->balance_bitcoin . ' BTC';
                                                               ^
Main.java:102: error: unclosed character literal
            $faucetBalance = $faucetBalance->balance_bitcoin . ' BTC';
                                                                    ^
Main.java:104: error: unclosed character literal
            $faucetBalance = 'N/A';
                             ^
Main.java:104: error: unclosed character literal
            $faucetBalance = 'N/A';
                                 ^
Main.java:107: error: class, interface, or enum expected
        $query = "update microfaucet_settings set value = '$escapedValue' where name = 'faucet_balance'";
        ^
Main.java:108: error: class, interface, or enum expected
        mysqli_query($db, $query);
        ^
Main.java:109: error: class, interface, or enum expected
    }
    ^
Main.java:113: error: class, interface, or enum expected
$recaptcha = false;
^
Main.java:114: error: class, interface, or enum expected
if (!empty($recaptchaPublicKey) && !empty($recaptchaPrivateKey)) {
^
Main.java:116: error: class, interface, or enum expected
}
^
Main.java:117: error: empty character literal
$result = '';
          ^
Main.java:117: error: unclosed character literal
$result = '';
           ^
Main.java:118: error: empty character literal
$resultHtml = '';
              ^
Main.java:118: error: unclosed character literal
$resultHtml = '';
               ^
Main.java:120: error: class, interface, or enum expected
if ($intervalH) {
^
Main.java:121: error: unclosed character literal
    $interval = $intervalH . ' hours';
                             ^
Main.java:121: error: unclosed character literal
    $interval = $intervalH . ' hours';
                                    ^
Main.java:124: error: class, interface, or enum expected
if ($intervalM) {
^
Main.java:125: error: unclosed character literal
    $interval .= ($intervalH ? ' and ' : '') . $intervalM . ' mins';
                               ^
Main.java:125: error: unclosed character literal
    $interval .= ($intervalH ? ' and ' : '') . $intervalM . ' mins';
                                     ^
Main.java:125: error: empty character literal
    $interval .= ($intervalH ? ' and ' : '') . $intervalM . ' mins';
                                         ^
Main.java:125: error: unclosed character literal
    $interval .= ($intervalH ? ' and ' : '') . $intervalM . ' mins';
                                          ^
Main.java:125: error: unclosed character literal
    $interval .= ($intervalH ? ' and ' : '') . $intervalM . ' mins';
                                                            ^
Main.java:125: error: unclosed character literal
    $interval .= ($intervalH ? ' and ' : '') . $intervalM . ' mins';
                                                                  ^
Main.java:127: error: unclosed character literal
$ip = $_SERVER['REMOTE_ADDR'];
               ^
Main.java:127: error: unclosed character literal
$ip = $_SERVER['REMOTE_ADDR'];
                           ^
Main.java:128: error: class, interface, or enum expected
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
^
Main.java:128: error: unclosed character literal
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
             ^
Main.java:128: error: unclosed character literal
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
                            ^
Main.java:128: error: unclosed character literal
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
                                   ^
Main.java:128: error: unclosed character literal
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
                                        ^
100 errors
stdout
Standard output is empty