Mercurial > hg > egg-tcls
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 |
rev | line source |
---|---|
0 | 1 <? |
2 // ===================================================== | |
3 // URLLog PHP-script for redirecting ShortURLs | |
4 // (C) Copyright 2006 Tecnic Software productions (TNSP) | |
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 | 8 |
9 // ===================================================== | |
10 // Helper functions | |
11 $idStr = "ABCDEFGHIJKLNMOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; | |
12 | |
17
b9c27bad2d9a
Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
13 function myerr($str = "") { |
0 | 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 | 16 exit; |
17 } | |
18 | |
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 | 24 |
25 // Calculate urlID | |
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 | 28 |
29 for ($urlID = 0, $i = 0; $i < $urlLen; $i++) { | |
30 $urlID *= strlen($idStr); | |
31 | |
32 $n = strpos($idStr, $urlStr[$i]); | |
33 if ($n !== FALSE) { | |
34 $urlID += $n; | |
35 } else | |
17
b9c27bad2d9a
Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
36 myerr("Invalid ID."); |
0 | 37 } |
38 | |
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 | 45 } |
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 | 51 |
17
b9c27bad2d9a
Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
52 $db = null; |
0 | 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 | 55 ?> |