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;
 }