exec('create table if not exists keys(k varchar(80) primary key, v varchar(140), created integer, updated integer, origin varchar(16));'); } catch(PDOException $e) { echo 'Exception : '.$e->getMessage(); exit(0); } if (isset($_GET['k'])) { // This is a request to get one specific value. $keys = array_map(array($db, 'quote'), explode(',', $_GET['k'])); $result = $db->query('SELECT v FROM keys WHERE k IN ('.implode(',', $keys).') ORDER BY updated DESC LIMIT 1;', PDO::FETCH_ASSOC); foreach($result as $row) { echo $row['v']; } exit(0); } elseif (isset($_POST['auth'])) { if ($_POST['auth'] != $authorization) { echo "Not authorized.\n"; exit(0); } // We have an authorized request to insert or replace a key/value pair. $stmt = $db->prepare( 'INSERT OR REPLACE INTO keys VALUES (:k, :v, COALESCE((SELECT created FROM keys WHERE k = :k), :rtime), :rtime, :raddr);'); $stmt->bindParam(':rtime', $_SERVER['REQUEST_TIME'], PDO::PARAM_INT); $stmt->bindParam(':raddr', $_SERVER['REMOTE_ADDR'], PDO::PARAM_STR); foreach($_POST as $key => $value) { if ($key == 'auth') { continue; } $stmt->bindParam(':k', $key, PDO::PARAM_STR); $stmt->bindParam(':v', $value, PDO::PARAM_STR); $stmt->execute(); if ($db->errorCode() != '00000') { echo "Error:", $db->errorInfo()[2], "\n"; } else { echo "OK\n"; } } exit(0); } $headers = array("key ","value ","created ","updated ","origin "); echo implode("\t", $headers)."\n"; $headers = array("-------------","--------------","------------","------------","------------"); echo implode("\t", $headers)."\n"; $result = $db->query('SELECT * FROM keys ORDER BY updated DESC', PDO::FETCH_ASSOC); foreach($result as $row) { // print_r( $row ); $row['k'] = str_pad($row['k'], 12); $row['v'] = str_pad($row['v'], 12); $row['created'] = date('Y-m-d', $row['created']); echo implode("\t", $row)."\n"; } ?>