短縮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 とかのままでは、ちょっとカッコ悪いので、
RewriteEngine on RewriteRule ^([a-zA-Z0-9]+)$ /r1edirect.php?id=$1
こうすれば、
http://hogehoge.com/ABCD123
これで、リダイレクトしてくれるので、やや雰囲気が出るかなと。
(DBの部分は次回に)