annotate urlredirect.php.txt @ 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 3cf438db908a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1 <?
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
2 // =====================================================
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3 // URLLog PHP-script for redirecting ShortURLs
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
4 // (C) Copyright 2006 Tecnic Software productions (TNSP)
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
5 // =====================================================
17
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
6 // SQLite3 database file path and name
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
7 $dbFilename = "urllog.sqlite";
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
8
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
9 // =====================================================
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
10 // Helper functions
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
11 $idStr = "ABCDEFGHIJKLNMOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
12
17
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
13 function myerr($str = "") {
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
14 header("Status: 404 Not Found");
17
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
15 echo "404 Not Found - ".$str;
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
16 exit;
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
17 }
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
18
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
19 // Check arguments
17
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
20 if (isset($_GET["u"]))
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
21 $urlStr = $_GET["u"];
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
22 else
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
23 myerr("No ID given.");
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
24
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
25 // Calculate urlID
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
26 $urlLen = strlen($urlStr);
17
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
27 if ($urlLen < 1) myerr("Invalid ID length.");
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
28
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
29 for ($urlID = 0, $i = 0; $i < $urlLen; $i++) {
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
30 $urlID *= strlen($idStr);
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
31
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
32 $n = strpos($idStr, $urlStr[$i]);
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
33 if ($n !== FALSE) {
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
34 $urlID += $n;
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
35 } else
17
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
36 myerr("Invalid ID.");
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
37 }
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
38
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
39 // Find the URL
17
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
40 try {
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
41 $db = new PDO("sqlite:".$dbFilename);
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
42 }
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
43 catch (PDOException $e) {
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
44 myerr("Could not connect to URL database: ".$e->getMessage().".");
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
45 }
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
46
17
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
47 foreach ($db->query("SELECT url FROM urls WHERE id=".$urlID) as $row) {
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
48 header("Location: ".$row["url"]);
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
49 exit;
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
50 }
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
51
17
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
52 $db = null;
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
53 // Output result
17
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
54 myerr("No such ID in database.");
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
55 ?>