プログラム

特定のページ間のアクセス数をカウントする

今日は最近学んだ特定のページ間のアクセス数をカウントする方法の一部をまとめようと思います。

あるページAのリンクを踏んでページBに遷移したアクセス数を計るには、以下の方法を使います!

ページAのhtmlに以下のタグを記述して、ページBに遷移する際に、透明な1ピクセルのgifを書き出すphpを呼び出します。ページAには透明な1ピクセルのgifが表示されますが、ユーザには影響ありません。

つまり、(****.phpが呼び出された数)=(ページAからページBへのリンクをクリックした数)になるので、(****.phpが呼び出された数)をカウントすることで、特定のページ間のクリック数をカウントすることができます。

■ページA.html■

<a href="../ページB.htm"><img src="../****.php" >ページB</a>

■****.php■

<?php
header('Content-Type: image/gif');
header("Expires: Sat, 01 Jan 2000 00:00:00 GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
echo base64_decode('R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==');
?>
 

| | コメント (0) | トラックバック (0)

携帯の動画配信方法②(html、.htaccess作成の巻)

前回の続きで、携帯向け動画の配信方法をまとめを書き記したいと思います。

③動画を配信する(ストリーミング形式&ダウンロード形式)ためのhtmlを作成する。

②でいよいよ、携帯むけの動画docomoは3gp、auは3g2の動画を用意したので、その動画を配信するためのページを作成します。その際に、以下のページが非常に参考になりました。

http://wiki.livedoor.jp/iwmr/

ここに記されている通りに進めれば、本来であれば何ら問題なくページを作成できるのですが、やはり初めて動画配信をすると、色々と細かいミスがあり、どこが問題でうまくいかないのかわからなくなり、迷路に迷ってしまいます。なので、自分の失敗した箇所を書いておこうと思います。

まずは、docomoですが、上記サイトに書かれている通りにhtmlを書きそのデータをサーバにアップしたところ、すんなりとストリーミング配信ができました。自分の端末(n705i)で動作検証をしてOKでした。

次にauですが、色々とつまずきました。まずは、①で述べたファイルサイズですが、当初はファイルサイズを意識していなかったので、1.6MBの3gp2で動作検証をして(docomoが2MBまでOKだったので…)全然うまくいきませんでした。

次に、ファイルサイズの問題に気づきファイルサイズを小さくしたのですが、auではhtmlにダウンロードするファイルサイズを書く必要があり、ファイルを小さくした際にhtmlのファイルサイズを修正を忘れてつまりました。

そこもクリアしたのですが、次はそもそも最初に検証していた端末はでは、今回作成した3gp2を再生できないという問題がありました。理由はわからないですが、普通にSDを使ってデータを渡したころ、動画が再生できませんでした。別の最新端末で再生したところうまくいったので、理由は深追いしませんでいした。

動画自体は再生できることは確認できましたが、やはりダウンロードができませんでした。原因は先ほど述べた参考にしていたサイトの中で、見落としていた箇所がありました。それが、.htaccessの設定です。

④.htaccessファイルの設定

ブログにベーシック認証とアクセス制限をする際に.htaccessについて書きましたが、詳細は以下です。

ApacheなどのWebサーバで使用できる、Webサーバの動作をディレクトリ単位で制御するためのファイル。 具体的には、CGISSIなどを実行するための宣言(命令)や、拡張子ごとにファイルタイプを指定するMIMEタイプの設定、ユーザ認証IPアドレスドメイン単位でのアクセス制限などを書き込むことができる。

その.htaccessに、videoのファイル形式は.3g2だよと以下のように設定をします。

AddType application/x-mpeg .amc
AddType video/3gpp2 .3g2
AddType audio/3gpp2 .3g2

これで、ようやくダウンロードができると思ったら、また駄目でした。原因はサーバの設定で、.htaccessが有効になっていませんでした。そこで、サーバの管理者に依頼して.htaccessを有効にしてもらいました。(すみません。ここはどうやって有効にしたかはわからないので、わかり次第ブログに残したいと思います。)

これで、auの動画をダウンロードして、動画を再生することができました!!!長い道のりだった~。終わってみると、ちゃんと解説サイトを読んでいなかったり、書いてある通りの設定をしてないだけだったり、凡ミスをしていたりということが多かったですが、何も知らないで携帯の動画配信に挑戦するとなかなか大変なものでした。

行き詰ったときは、動画のファイルが悪いのか、それともダウンロードサイトのhtmlが悪いのか、若しくはサーバの設定が悪いのか問題を切り分けて、原因を探らないとお手上げになってしまうので気をつけましょう!

それでは、また何かに壁にぶつかった際はその過程をブログに記そうと思います。

| | コメント (2) | トラックバック (0)

携帯の動画配信方法①(aviからの3gpp、3gp2作成の巻)

AVI形式の動画を編集して、変換して、動画配信まで至った道のりを残して置こうと思います。最初簡単にできるるだとうと思っていましたが、結構大変でした~。

当初は、docomo・au・softbankの3キャリア向けに配信しようと思っていましたが、softbankは最後の最後までエラーをクリアできなかったので、今回はdocomo・auの対応方法をまとめます。

①AVIの動画を編集する
まずは、動画の編集をしました。携帯で配信できる動画はファイルサイズに上限があり、どの機種まで対応させるかと、動画の配信方法で(ストリーミング形式かダウンロード形式かで)ファイルサイズの上限が変わってくると思います。

docomoはファイル形式は3gp、配信方法はストリーミングで、対応機種はある程度最新のものという条件で、ファイルサイズは2MB以内になりました。auはファイル形式は3g2、配信方法はダウンロードで、対応機種はある程度最新のものという条件で、ファイルサイズは1.5MB以内になりました。

下記サイトが参考になりました。

http://www.claps.biz/blog/archives/79

ということで、最終的にファイルサイズは1.5MBに抑えるために、5分間あったAVIの動画を40秒×3本のダイジェスト版の動画をプレミアで編集して作成しました。

②AVIの動画を変換する

①で編集したAVIをdocomoは3gp、auは3g2形式に変換する必要があります。その際に使ったフリーのツールが携帯動画変換君です。下記サイトからダウンロードできるし、使い方の詳細の説明もあるので便利です。ちなみに、携帯動画変換君は、AVIの動画をipod用に変換する場合にも使えるので、非常に重宝します。

http://mobilehackerz.jp/contents/3GPConv

それから、携帯動画変換で動画の変換をする際に、3gpや3g2で複数の変換方法が合って初心者は若干悩みます。(自分も悩みました。)色々と試した結果、docomoの3gpは『3GPPファイル、音声ACC形式一般設定』で、auの3g2は『3GP2ファイル、音声ACC形式一般設定』が妥当だと思います。

これで、いよいよ動画配信をするための素材が揃いました。

続きは、次回ブログで!

<

| | コメント (2) | トラックバック (0)

XAMPPのエラー『エラー:MYSQLの起動中にエラーが発生しました。[-1]』

XAMPPをインストール後にディレクトリを変えたいと思い、アンインストールをして違うディレクトリにインストールし直したところ、XAMPPのコントロールパネルからMySQLを起動しようとすると、『エラー:MYSQLの起動中にエラーが発生しました。[-1]』とメッセージが出て、MYSQLを起動できなくなりました。

Err1_2

原因としては、XAMPPのアンインストーラを使わずに、[アプリケーションの追加と削除]からアンインストールをしようとしたためで、この方法では、完全に削除できないためにいくつかゴミが残っていてその為に再インストール後XAMPPがおかしな状態になります。

Xamppが以前と同じMySqlと言う名前でサービスを作成することが問題であるため、まず、[コントロールパネル]-[管理ツール]-[サービス] からサービスを起動させ、MySqlを選択してください。

MySqlをダブルクリックすると、実行ファイルのパスが出てきます。この実行パスがXamppのフォルダの実在しないexeを指定しているため、MySqlを実行するとエラーとなります。


そこで、コマンドプロンプトを起動してMySQLをインストールしているディレクトリ内の「bin」フォルダに移動してサービス(サービスは[コントロールパネル]-[管理ツール]-[サービス]の一覧)の登録を削除する。たとえば、「C:\mysql\」の場合は

    C:\Document and Setting\user> CD C:\mysql\bin
    C:\mysql\bin>mysqld –remove MySQL

これで、サービスからMySqlが消えて、XAMPPのコントロールパネルからMySQLを起動できるようになります。


XamppのMySQLが起動しない、原因と対策は幾つかパターンがあるようです。今回の自分のケースでは、この方法で解決できたので、同じ状況ではまってしまっている人は是非試して見てください!!!

| | コメント (0) | トラックバック (0)

クロスサイトスクリプティング

先日、クロスサイトスクリプティングとい言葉を初めて知ったので、以下にメモ代わりに調べた結果を残しておきます。

--------------------------------

クロスサイトスクリプティング (Cross Site Scripting) とは、動的にWebページを生成するアプリケーションのセキュリティ上の不備を意図的に利用し、狭義にはサイト間を横断して悪意のあるスクリプトを混入させること。また、それを許す脆弱性のこと。広義にはスクリプトを混入させずとも、任意の要素を混入させられうる脆弱性を含む。略記としてCSS、XSSがある。CSSは同分野でよく使用されるCascading Style Sheetsの略でもあるので、混乱を避けるためにXSSと表記されることが多い。

攻撃者が対象となるサイトとは異なるサイトからスクリプトを送り込み、訪問者に実行せしめることから、クロスサイト(サイトを横断した)スクリプティング(スクリプト処理)と呼ばれる。

ウェブアプリケーションが入力したデータ(フォーム入力など)を適切にエスケープしないままHTML中に出力することにより、入力中に存在するタグ等文字がそのままHTMLとして解釈される。ここでスクリプトを起動させることにより、以下に挙げるような攻撃が成立する。

    ・クッキーの値を取得あるいは設定することにより、セッションハイジャックする
    ・強制的なページ遷移を起こさせ、クロスサイトリクエストフォージェリの踏み台とする
    ・ページ全体を置き換えることにより、偽のページを作り出す(典型的にはフィッシングに用いられる)
    ・フォームの送信先を置換することにより、入力を第三者サイトに送信するよう仕向ける

これらの攻撃が成立することにより、秘密情報の窃取や、回復不可能な権利侵害につながるおそれがある。

--------------------------------

とのことです。

ちなみに、自分がPHPを勉強し始めて最初に以下のようなスクリプトを書きました。

<input type="hidden" name="name"value="<?php print $_POST[name]; ?>">

これでは、XSS脆弱性があるようですね。そのため以下のように修正しました。

<input type="hidden" name="name" value="<?php print htmlspecialchars($_POST[name]); ?>">

htmlspecialcharsを使うことで、HTMLの特殊文字を実態参照に変換してくれます。
XSSを防ぐためにはhtmlspecialcharsを使う!勉強になりました。

| | コメント (2) | トラックバック (0)

初ブログ!

ブログというものに、なんとなく抵抗感があり、長い間避け続けていましたが、

ついに自分のブログを開設しました。

いざ、作ってみると、それはそれはアリだな。とほくそ笑んでしまいますね。

食わず嫌いだった、里芋がおいしかった時の感触に似ている感じです。

このブログの趣旨は、SEながらプログラムが書けない自分の成長記としていこうかなと考えています。

プログラム以外のプライベートなことも交えつつ、楽しく記していきます!

まず、今自分の前にある課題としては、

・ブログにアフェリエイトを貼る
・ブログのアクセス解析を日々行う
・バックログお試し版に入ってみる
・自作PHPをSVNにインポートしてみる
・自作PHPをSVN経由でどっかのサーバに移行してみる
・個人でサーバを持つ
・クロスサイトスクリプティングについて調べる
・動的にSWFファイルを作成する

現状、以上です。

これから数ヶ月、日々宿題が出て、クリアしていく修行のような毎日になりそうです。

でも、そういうのは、けっこう好きなので、頑張っていきたいと思います!

自分が思いついたものを自分で作れるWebエンジニア目指して頑張ります!

| | コメント (2) | トラックバック (0)

その他のカテゴリー

プログラム | 文化・芸術