strtotime('+120 days'), 'path'=>'/', 'domain'=>$_SERVER['HTTP_HOST'], 'secure'=>false, 'httponly'=>false, 'samesite'=>'Strict']); } $priv = $_COOKIE['mtvid']; //reuse if preexisting } else $priv = null; $key = md5($_POST['dbName'] . $_POST['un'] . $_POST['host'] . $priv); $dbName = str_replace(array('\\',';','"','<'), '', $_POST['dbName']); $un = str_replace(array('\\',';','"','<'), '', $_POST['un']); $host = empty($_POST['host']) ? 'localhost' : str_replace(array('\\',';','"','<'), '', $_POST['host']); if(empty($dbName) || empty($un) || empty($host)) _return(400); $databases[] = ['key'=>$key, 'db'=>$dbName, 'un'=>$un, 'pw'=>$_POST['pw'], 'host'=>$host, 'priv'=>$priv]; file_put_contents('/tmp/MyTableViewer', json_encode($databases)) or _return(500); chmod('/tmp/MyTableViewer', 0600); } //ROW COUNT if(isset($_GET['getRowCount'])) { if(empty($db)) _return(400); $res = mysqli_query($conn, 'SELECT COUNT(*) FROM `' . str_replace(array('\\',';','"','`'), '', $_GET['table']) . '`'); echo mysqli_fetch_row($res)[0]; _return(200); } //DELETE DB if(isset($_GET['del'])) { foreach($databases as $key => $database) if($database['key'] === $_GET['db']) $delkey = $key; //get just the last match if(isset($delkey)) { unset($databases[$delkey]); file_put_contents('/tmp/MyTableViewer', json_encode($databases)) or _return(500); _return(200); } _return(404); } if(isset($_COOKIE['mtvid'])) //extend (private key) cookie lifespan setcookie('mtvid', $_COOKIE['mtvid'], ['expires'=>strtotime('+120 days'), 'path'=>'/', 'domain'=>$_SERVER['HTTP_HOST'], 'secure'=>false, 'httponly'=>false, 'samesite'=>'Strict']); //RETURN function _return($code) { if(!empty($conn)) mysqli_close($conn); http_response_code($code); exit(); } ?>