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
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 <?
51
eb17a6bfd443 urlredirect: Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 30
diff changeset
2 // ==========================================================
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3 // URLLog PHP-script for redirecting ShortURLs
51
eb17a6bfd443 urlredirect: Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 30
diff changeset
4 // (C) Copyright 2006-2011 Tecnic Software productions (TNSP)
eb17a6bfd443 urlredirect: Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 30
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
51
eb17a6bfd443 urlredirect: Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 30
diff changeset
7 $dbFilename = "../db/urllog.sqlite";
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
8
51
eb17a6bfd443 urlredirect: Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 30
diff changeset
9 // ==========================================================
0
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 = "") {
30
3cf438db908a urlredirect: Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 17
diff changeset
14 header("Status: 404 Not Found");
3cf438db908a urlredirect: Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 17
diff changeset
15 echo "404 Not Found - ".$str;
3cf438db908a urlredirect: Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 17
diff changeset
16 exit;
0
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"]))
30
3cf438db908a urlredirect: Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 17
diff changeset
21 $urlStr = $_GET["u"];
17
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
22 else
30
3cf438db908a urlredirect: Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 17
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++) {
30
3cf438db908a urlredirect: Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 17
diff changeset
30 $urlID *= strlen($idStr);
3cf438db908a urlredirect: Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 17
diff changeset
31 $n = strpos($idStr, $urlStr[$i]);
3cf438db908a urlredirect: Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 17
diff changeset
32 if ($n !== FALSE) {
3cf438db908a urlredirect: Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 17
diff changeset
33 $urlID += $n;
3cf438db908a urlredirect: Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 17
diff changeset
34 } else
3cf438db908a urlredirect: Indentation.
Matti Hamalainen <ccr@tnsp.org>
parents: 17
diff changeset
35 myerr("Invalid ID.");
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
36 }
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
37
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
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
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
44 }
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
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
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
50
17
b9c27bad2d9a Updated version for SQLite3 database.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
51 $db = null;
0
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
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
1c4e2814cd41 Initial import.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
54 ?>