# HG changeset patch # User Matti Hamalainen # Date 1401798671 -10800 # Node ID 68c4b25c982c530188c6e37fcb8b6679b1ca12f8 # Parent 61ced42f359282f249868b66b120e23e3c390624 Update the URL redirector PHP script. diff -r 61ced42f3592 -r 68c4b25c982c urlredirect.php.txt --- a/urlredirect.php.txt Tue Jun 03 15:11:18 2014 +0300 +++ b/urlredirect.php.txt Tue Jun 03 15:31:11 2014 +0300 @@ -31,9 +31,29 @@ // ========================================================== // Helper functions -$idStr = "ABCDEFGHIJKLNMOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; +function urlToID($url) +{ + $idCodes = "ABCDEFGHIJKLNMOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + $idNumCodes = strlen($idCodes); + + $len = strlen($url); + if ($len < 1) + return -1; -function myerr($str = "") { + for ($id = 0, $i = 0; $i < $len; $i++) + { + $id *= $idNumCodes; + $n = strpos($idCodes, $url[$i]); + if ($n !== FALSE) + $id += $n; + else + return -2; + } + return $id; +} + +function myerr($str = "") +{ header("Status: 404 Not Found"); echo "404 Not Found - ".$str; exit; @@ -46,17 +66,10 @@ myerr("No ID given."); // Calculate urlID -$urlLen = strlen($urlStr); -if ($urlLen < 1) myerr("Invalid ID length."); +$urlID = urlToID($urlStr); +if ($urlID < 0) + myerr("Invalid ID."); -for ($urlID = 0, $i = 0; $i < $urlLen; $i++) { - $urlID *= strlen($idStr); - $n = strpos($idStr, $urlStr[$i]); - if ($n !== FALSE) { - $urlID += $n; - } else - myerr("Invalid ID."); -} // Find the URL try { @@ -66,7 +79,8 @@ myerr("Could not connect to URL database: ".$e->getMessage()."."); } -foreach ($db->query("SELECT url FROM urls WHERE id=".$urlID) as $row) { +foreach ($db->query("SELECT url FROM urls WHERE id=".$urlID) as $row) +{ header("Location: ".$row["url"]); exit; }