ギークなお姉さんは好きですか

恋焦がれる理想の男性・ギークに近づくため、プログラミングがわかるお姉さんを目指すブログ

べ、べつにブクマ禁止したいわけじゃないんだからっ!

日記

19時前に会社出たのに、ちょっぴりスイーツ気取りで
「一駅歩いてみようかな☆」 なんて思ったのが間違いだった。
超☆迷子。結局おうちに着いたのは23時。これはひどい。
洗面台へ向かい、手を洗う。
鏡をのぞくと、なぜか涙が流れていた。
きっとつらかったんだと思う。
紅は地図も読めないし話も聞かない女だ。
この前あきやんにそう言ったら 「そんなことないよー」 と言ってくれたけど
これだけは譲れない。だって絶対そうだもん。





はてブを禁止してみたい!

はてなブックマークを禁止する方法 ( Geekなぺーじ さま )


このエントリを見かけたときからあきやんに聞こうと決めていた。
で、昨日聞いた。
まだまだツメが甘い理解だけど、忘れないうちに理解した範囲でメモ。
※最初のタグは全角にしてあります。



1 <?php
2  $agent=$_SERVER['HTTP_USER_AGENT'];
3 if(strncmp('Hatena',$agent,6)==0{
4  header("HTTP/1.0 302 redirect");
5  header("Location:http://www.geekpage.jp/ ");
6 }
7 ?>



知らない単語がいっぱいある。
でも if は昨日やったから分かる。ナイスギーク! >べにぢょ


ここに書かれてる内容を日本語に訳すと、
「はてなが見にきたら http://www.geekpage.jp/ に飛ばせ」って言ってるぽい。ざっくりだけど。
あきやんのありがたいメモがあるのでうpしとこう。


   

これは分かりやすい。
最落ナシ1円〜でどうだろう?ダメだろう。


はてブするときっていうのは、どうやらはてながそのページを見に来てるらしい。
あれが JavaScript だというのは知ってる。
最初ブックマークレットの使い方が分からなくて、JavaScript うんちゃらかんちゃらというのを
アドレスバーに直接コピペしていた。知ってるといってもその程度なんだけど。



コードを解釈する。
2行目は、すごくちゃんと説明してもらった気がするけど忘れた。
あ、いや!ヒントもらえば思い出す!聞いてたって!ちゃんと話聞いてたって!!
泡盛飲みながら聞いてたのが良くなかったか・・・でも大丈夫。頭のどっかにはあるはず。


とりあえずググる


サーバ変数とはサーバが生成する変数です。
サーバはヘッダやパス・スクリプトの位置などいろいろな情報を持っていますが、
そのサーバの情報にアクセスできる変数だと思って下さい。
「ブラウザ情報」だとか「IPアドレス」だとかもこのサーバ変数で取得できます。
この変数1つで取得できちゃうので、よくある「あなたのお使いのブラウザは○○です」
なんて表示も1行スクリプトで済ませられちゃいます。

参考:サーバ変数について


OH!Yes!!
そだそだ。そういえばそうだった。思い出してきた。
あきやんにサーバ〜ブラウザ間でやり取りしてる情報を見せてもらった。
んで、このへんの記事を思い出して納得した記憶。
当時はなんでバレてるのか全然分からなかったにょ。



コードに戻る。
その情報の中の HTTP_USER_AGENT の情報を見ろ!って指定してる、んだった気がする。
して、それを $agent に代入する、と。


3行目。
もし、ふにゃららが0だったら、って言ってる。
ふにゃららの中身はよく分からない。
どこが分からないか?まず strncmp が分からない。
ググろう。


strncmp - 最初の n 文字についてバイナリセーフな文字列比較を行う

参考:strncmp - Manual



strncmpn は数字を意味してる、って聞いた。



この関数は strcmp() に似ていますが、 各文字列から(最大)文字数(len ) を
比較に使用するところが異なります。



おぉ。記憶と説明がつながった。文字数が関係してるから n が入るのね。
(カッコ)の中を見る。
'Hatena',$agent,6 は、確か $agent の最初の6文字を見ろ、ってこと。
その6文字が Hatena だったら、ってことだよね。
うん。だったらなんなのさ!
あぁ、さっきのサイトに戻ろう。せっかちイクナイ。まだ慌てるような時間じゃない。


返り値
str1 が str2 より小さい場合に < 0、str1 が str2 より大きい場合に > 0 、
等しい場合に 0 を返します。



つまり、6文字目までが Hatena だったら0が返ってくるってことか。
それが超イコールで0と結ばれてるから、3行目を日本語に訳すと
ブラウザがサーバーに送ってきたデータの HTTP_USER_AGENT の部分、
ココの最初の6文字が Hatena だったら if の条件式が成り立つ、という意味。
条件式が成り立ったら { 以下を実行するのが if。そう勉強した。
参考:5日目 もし私が女子高生だったら



4,5行目。
header は関数らしい。


header - 生の HTTP ヘッダを送信する

参考:Header


ぜんぜん関係ないけど、コレ最初見たとき ”一生(いっしょう)のHTTP ヘッダ” かと思って
ちょっとわらたw
一生てなんだよ!すごいウケる。そぐわない。場違いな言葉だ。



また逸れた。
ていうか、header はぶっちゃけよく分からないの。
だからとりあえずいいや。
でも4行目の HTTP/1.0 302 redirect は、リダイレクトしろよ、って言ってるんだと思う。
で、5行目でリダイレクトする場所を指定してるんだと思う。それはガチ。




オーケー!
今日はこのへんでおk。
とりあえずやってみる。
サンプル:hateb.php



Σででできるじゃん!!!!!!!!!!!

あ。Geekなぺーじの追記に書いてあった。そっか、できるんだ・・・
いいの。いいの別に。ただ、ちょっとやってみようかなって思っただけだし・・・。





寝よう。





追伸

画像出力の件、コメントくださった方ありがとうございました!
あと、あと、おみくじやってくれた人!すごく嬉しかったですありがとうございます!!
+++++!!