# HG changeset patch # User Matti Hamalainen # Date 1315228869 -10800 # Node ID b9c27bad2d9ae7e4f2036237ea9318e991d1ca06 # Parent 916cffa4f3a14c88dfa7905540644964670b8b49 Updated version for SQLite3 database. diff -r 916cffa4f3a1 -r b9c27bad2d9a urlredirect.php.txt --- a/urlredirect.php.txt Mon Sep 05 16:19:38 2011 +0300 +++ b/urlredirect.php.txt Mon Sep 05 16:21:09 2011 +0300 @@ -3,27 +3,28 @@ // URLLog PHP-script for redirecting ShortURLs // (C) Copyright 2006 Tecnic Software productions (TNSP) // ===================================================== - -// URLLog datafile -$urlFilename = "data.urllog"; +// SQLite3 database file path and name +$dbFilename = "urllog.sqlite"; // ===================================================== // Helper functions $idStr = "ABCDEFGHIJKLNMOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; -function myerr() { +function myerr($str = "") { header("Status: 404 Not Found"); - echo "404 Not Found"; + echo "404 Not Found - ".$str; exit; } // Check arguments -if (!isset($argv[0])) myerr(); +if (isset($_GET["u"])) + $urlStr = $_GET["u"]; +else + myerr("No ID given."); // Calculate urlID -$urlStr = $argv[0]; $urlLen = strlen($urlStr); -if ($urlLen < 1) myerr(); +if ($urlLen < 1) myerr("Invalid ID length."); for ($urlID = 0, $i = 0; $i < $urlLen; $i++) { $urlID *= strlen($idStr); @@ -32,26 +33,23 @@ if ($n !== FALSE) { $urlID += $n; } else - myerr(); + myerr("Invalid ID."); } // Find the URL -$urlFile = fopen($urlFilename, "r"); -if (!$urlFile) myerr(); - -$urlFound = 0; -while (!feof($urlFile) && !$urlFound) { - $urlItems = split(" ", fgets($urlFile, 4096), 5); - if ($urlItems[4] == $urlID) $urlFound = 1; +try { + $db = new PDO("sqlite:".$dbFilename); +} +catch (PDOException $e) { + myerr("Could not connect to URL database: ".$e->getMessage()."."); } -fclose($urlFile); +foreach ($db->query("SELECT url FROM urls WHERE id=".$urlID) as $row) { + header("Location: ".$row["url"]); + exit; +} +$db = null; // Output result -if ($urlFound) { - header("Location: ".$urlItems[0]); -} else - myerr(); - -exit; +myerr("No such ID in database."); ?> \ No newline at end of file