Mercurial > hg > egg-tcls
annotate urlredirect.php.txt @ 51:eb17a6bfd443
urlredirect: Cosmetics.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Wed, 07 Sep 2011 15:33:57 +0300 |
parents | 3cf438db908a |
children | 7ed449f9b848 |
rev | line source |
---|---|
0 | 1 <? |
51 | 2 // ========================================================== |
0 | 3 // URLLog PHP-script for redirecting ShortURLs |
51 | 4 // (C) Copyright 2006-2011 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 |
51 | 7 $dbFilename = "../db/urllog.sqlite"; |
0 | 8 |
51 | 9 // ========================================================== |
0 | 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 = "") { |
30 | 14 header("Status: 404 Not Found"); |
15 echo "404 Not Found - ".$str; | |
16 exit; | |
0 | 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"])) |
30 | 21 $urlStr = $_GET["u"]; |
17
b9c27bad2d9a
Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
22 else |
30 | 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 | 30 $urlID *= strlen($idStr); |
31 $n = strpos($idStr, $urlStr[$i]); | |
32 if ($n !== FALSE) { | |
33 $urlID += $n; | |
34 } else | |
35 myerr("Invalid ID."); | |
0 | 36 } |
37 | |
38 // Find the URL | |
17
b9c27bad2d9a
Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
39 try { |
b9c27bad2d9a
Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
40 $db = new PDO("sqlite:".$dbFilename); |
b9c27bad2d9a
Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
41 } |
b9c27bad2d9a
Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
42 catch (PDOException $e) { |
b9c27bad2d9a
Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
43 myerr("Could not connect to URL database: ".$e->getMessage()."."); |
0 | 44 } |
45 | |
17
b9c27bad2d9a
Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
46 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
|
47 header("Location: ".$row["url"]); |
b9c27bad2d9a
Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
48 exit; |
b9c27bad2d9a
Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
49 } |
0 | 50 |
17
b9c27bad2d9a
Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
51 $db = null; |
0 | 52 // Output result |
17
b9c27bad2d9a
Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents:
16
diff
changeset
|
53 myerr("No such ID in database."); |
0 | 54 ?> |