function hashDecode($hashedUrl) { $urlEncode = new UrlEncode(); $result = array(); //No hash was given as input if (!$hashedUrl) { $result["error"] = "No input given"; } else { $hashedUrl = $urlEncode->parseHash($hashedUrl); if ($hashedUrl != -1) { $id = $urlEncode->decodeToOriginalUrl($hashedUrl); //Database stuff global $dbConnStr; //This comes from dbConfig.php $dbConnection = pg_connect($dbConnStr); $query = sprintf("SELECT url FROM urls WHERE id = %d", $id); //sprintf to reduce SQL injection attack $dbResult = pg_query($query); $row = pg_fetch_assoc($dbResult); if ($row) { $result["originalUrl"] = $row["url"]; } else { //The URL does not exist in our database $result["error"] = "Url does not exist: {$hashedUrl}"; } } else { $result["error"] = "Hashed url host incorrect"; } } return json_encode($result); }
function urlHash($url) { $urlEncode = new UrlEncode(); $url = $urlEncode->returnUrl($url); $result = array(); global $HOST; if (!$url) { $result["error"] = "No input given"; } else { //Database stuff global $dbConnStr; //This comes from dbConfig.php $dbConnection = pg_connect($dbConnStr); //First try get the id $query = sprintf("SELECT id FROM urls WHERE url = '%s'", $url); //sprintf to reduce SQL injection attack $dbResult = pg_query($dbConnection, $query); $row = pg_fetch_assoc($dbResult); //The URL does not exist in the DB, so insert it if (!$row) { $query = sprintf("INSERT INTO urls(url) VALUES('%s') RETURNING id", $url); $dbResult = pg_query($dbConnection, $query); $row = pg_fetch_assoc($dbResult); } if ($row) { $shortenedUrl = $urlEncode->encodeToShortenedUrl($row["id"]); $result["hashedUrl"] = "http://{$HOST}/{$shortenedUrl}"; } else { $result["error"] = "Unspecified error: Please email barry.steyn@gmail.com with details"; } } return json_encode($result); }