短縮URLサービスの作り方

短縮URLサービスをいろいろ使ったりしてたのですが、
・サービスがたまに止まったりしてる
・突然Twitterで使えなくなったりする
・アカウント登録がめんどくさい

などから、自前で作ってみることにしました。

まずは、URLを短縮して置き換えるとこ

make.php

<?php

if (isset($_POST["url"])) {
	
	$r = substr((md5(date("YmdD His"))), -7);

	//$r と $_POST["url"] をDBに格納する
}

?>

<html>
	<head>
		<title></title>
	</head>
	<body>
		<form method="post" action="./make.php">
		<input type="text" name="url" size="64"/>
		<input type="submit" />
		<h3><?php echo $r?></h3>
		</form>
	</body>
</html>

とりあえず、今日の日時分あたりのmd5ハッシュ値とURLを紐付けし、それをDBに格納します。
(DB格納部分は今度)

ハッシュしたKeyから、URLを引っ張ってきて、ridirectするとこ

redirect.php

<?php
$url = "";
if ($_GET['id']) {
	$value = getUrl($_GET['id']);
	if (!empty($value)) {
		$url = $value;
	}
}

header("Location:".$url);

function getUrl($id) {
	//DBに格納した、ハッシュからURLを引っ張る
}
?>

例えば、これを http://hogehoge.com 上に配置すると、

http://hogehoge.com/redirect.php?id=ABCD123

とかすれば、「ABCD123」に対応したURLに飛ばしてくれるわけです、

でも、redirect.php?id=ABCD123 とかのままでは、ちょっとカッコ悪いので、

Apache.htaccess をちょっといじります。

RewriteEngine on
RewriteRule ^([a-zA-Z0-9]+)$ /r1edirect.php?id=$1

こうすれば、
http://hogehoge.com/ABCD123

これで、リダイレクトしてくれるので、やや雰囲気が出るかなと。

(DBの部分は次回に)