Mercurial > hg > egg-tcls
changeset 180:68c4b25c982c
Update the URL redirector PHP script.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 03 Jun 2014 15:31:11 +0300 |
parents | 61ced42f3592 |
children | ff23ce8b938f |
files | urlredirect.php.txt |
diffstat | 1 files changed, 27 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- 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; }