PHP

[js] iframeからのアクセスかブラウザでの直アクセスか判別する

2010/09/07 Javascript No comments ,

同タイトルの質問より。
もうちょっと具体的にソースを書いてみる。

index.html(フレームを呼び出すページ)

iframeのsrc属性で、ファイル名に続けて適当にパラメーターをつける。

<iframe src="inner.html?frame=true"></iframe>

inner.html(フレームの中ページ)

JavaScript

<script type="text/javascript">
(function(){
	 if(location.search.indexOf("frame=true")!==-1){
		document.write("フレームからの呼び出しです");
	}else{
		document.write("直接アクセスしています");
	}
})();
</script>

JavaScriptの場合、パラメーターはlocationで拾えるのでindexOfとかmatchとかで調べる。
イベントハンドらはwindow.onloadとかでもいい。

コンテンツを非表示にしたいならstyleを弄るのが楽かな~。

<!DOCTYPE HTML>
<html lang="ja_JP">
<head>
	<meta charset="UTF-8">
	<title>inner.html(フレームの中ページ)</title>
	<script type="text/javascript">
	(function(){
		 if(location.search.indexOf("frame=true")!==-1){
			document.body.style.display="block";
		}
	})();
	</script>
	<style type="text/css">
		body{display:none}
	</style>
</head>
<body>
<h1>iframeからのアクセスかブラウザでの直アクセスか判別するテスト</h1>
<div style="background:#eee;height:400px">インラインフレームから見てね!</div>
</body>
</html>

PHP

<?php
if(isset($_GET&#91;"frame"&#93;)&&$_GET&#91;"frame"&#93;==ture){
	print "フレームからの呼び出しです";
}else{
	print "直接アクセスしています";
}
?>

PHPの場合はグローバル変数$_GETにパラメータがあるかどうか調べる。

PHPでコンテンツを見えなくするならページの先頭でdieしてしまうのが早いかな。

<?php
if(isset($_GET&#91;"frame"&#93;)&&$_GET&#91;"frame"&#93;!=ture){
	die("トップページからアクセスしてください");
}
?>
<!DOCTYPE HTML>
<html lang="ja_JP">
<head>
	<meta charset="UTF-8">
	<title>inner.html(フレームの中ページ)</title>
</head>
<body>
<h1>iframeからのアクセスかブラウザでの直アクセスか判別するテスト</h1>
<div style="background:#eee;height:400px">インラインフレームから見てね!</div>
</body>
</html>

location.href=”index.html”とかheader(“location:index.html”)とかで強制的に飛ばしてもいい。

[php + js]読み終えたページによって登場人物紹介ページの内容を変える

2010/01/25 Javascript No comments , ,

質問サイト見てたら面白いネタを発見!

私は今、長編小説をHPに公開しようと思っています。
キャラクター紹介のページを作ろうと思っているのですが、
読んだ読者さんによって表示される内容を変えたいのです。
例えば第一章で登場するAとBというキャラがいたとします。
読者さんが第一章を読んだらキャラ紹介のページにAとBのキャラクターの紹介が加わる。
という形にしたくて、cookieを使用しようと思うのですが、
なにぶんこのような操作ははじめてでしてどうしたらよいのかわかりません。
各章の最後のページにクッキーを食べさせるjavascriptを書いて、
キャラ紹介のページでクッキーを読み込み、キャラの説明文を表示したいです。

物語が進むにつれて、他キャラが増えたり、説明文に追記が加わるようにするにはどうしたら良いでしょう。
cookie使用があまりなく、調べましたがよくわかりませんでしたので詳しく教えていただけましたら幸いです。

独自CGI作ってもよさげな発想だと思ったんだけど、PHPとJavaScript使えば比較的簡単に出来るので、
デモとサンプルソース晒しときます。

ページ構成と概要

  • index.html
    小説のトップページ(つまり1ページ目 or 第一章)
  • 2.html
    2ページ目 or 第二章(以降、ページまたは章と同じファイル名で連番にする)
  • cast.php(cast.html)
    キャラクター紹介ページ
  • mychar.js
    クッキー発行スクリプトファイル

トップは1.htmlでもindex.htmでも何でもいいですが、
2ページ目より後のページを 番号+拡張子 にします。

サンプルはこちら

(さらに…)

[Ajax + PHP] Web2.0的にHTMLソースを隠す方法

2010/01/21 MooTools, PHP 1 comment ,

MooToolsで遊んでる時になんとなく思いついた。

HTMLソースを完全に隠すことは無理っちゃ無理だけど、サイトの内容をパクられたりしないように防御する事は出来る。
主要な柱は以下3つ。

  • ファイルの置き場所を隠す
  • ソースを読めなくする
  • アクセスを弾く

ロボット対策、右クリック禁止、Flashサイト化、HTMLソースそのものの暗号化するなど色々あるけど、
Web2.0とか言われている時代なのでAjaxを使う方法もアリなんじゃないかなと思ったわけです。

クローラーにキャッシュされず、メールアドレスも拾われず、右クリックしても無駄、「ソースを表示」選んでも主要部分は見えない。
それらの需要を大体カバーするサイト制作方法についての解説とサンプル。

簡単なデモを作ってみた
(デモはサンプルと構成が異なります)

サイト構成例

  • index.html
    メニューボタン、コンテンツ表示エリアを置く
  • style.css
    スタイルシート
  • view.js
    表示とかHTTPリクエストの制御をする
  • reqest.php
    view.jsからのリクエストを受けてページ内容を返す
  • page/about.php, gallery.php, contact.php
    表示するコンテンツページ

(さらに…)

配布するかもしれない完成済みスクリプトの紹介

2009/10/14 Memo No comments

こんなん作りました 😀

という未公開自作スクリプトの紹介です。

(さらに…)

[php] FirefoxでローカルのPHPファイルが開けなくなった場合

2009/07/03 Memo 1 comment ,

HTMLと同じくPHPもローカルで表示できるFirefox。
いつものようにPHPをプレビューしようとしたら何故かダウンロードのダイアログが出る、そんな症状になった場合の対処法について。

  1. まずプロファイルフォルダを探す。XPだと下記にあると思う。
    C:\Documents and Settings\ユーザ名\Application Data\Mozilla\Firefox\Profiles\プロファイルID
  2. そのフォルダの中からmimeTypes.rdfを探してテキストエディタで開く。
  3. application/x-httpd-phpと書いてあるRDFを全部消す
  4. Firefox再起動

RDFの例

 <RDF:Description RDF:about="urn:mimetype:application/x-httpd-php"
                   NC:fileExtensions="php"
                   NC:description=""
                   NC:value="application/x-httpd-php"
                   NC:editable="true">
    <NC:handlerProp RDF:resource="urn:mimetype:handler:application/x-httpd-php"/>
  </RDF:Description>