changeset 17:b9c27bad2d9a

Updated version for SQLite3 database.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 05 Sep 2011 16:21:09 +0300
parents 916cffa4f3a1
children 1e2232135354
files urlredirect.php.txt
diffstat 1 files changed, 21 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- 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