人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【高ポイント】.htmlファイルでphpスクリプトを動作させるには?

.phpファイルにhtmlとphpを混在させるのではなく
.htmlファイルにアクセスすると別に設けられたphpスクリプトを動作させたいです。

aaa.htmlにアクセスするとbbb.phpが読み込まれて指定してあるアクセスを遮断する
という感じをイメージです。

phpスクリプトは別のサーバーに設置します。

※ <body>内のみで行えること
※ .htaccessは使えない。

●質問者: dsa
●カテゴリ:ウェブ制作
✍キーワード:.htaccess AAA HTML PHP アクセス
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● typista
●10ポイント

http://openwebmail.mirror.luxadmin.org/manual/ja/security.hi...

PHP: PHPの隠蔽 - Manual

<body onLoad=”location.href=’

http://hoge.php

’”>

ではダメでしょうか?

若しくは、参考URLのようにhttpd.confの設定で、

phpをhtmlに見せかける(隠蔽)ではダメですか?

※.htaccessは使えないとのことなので、設定関連は

NGってことでしょうか?(自サーバでないなど?)

いずれにしても、主目的はIPアドレスでフィルタリングをしたいようですが、それをHTMLで実現するのは困難だと思います。

ので、何かの条件によって処理を分岐するのであれば、phpで実現するのが良いでしょう。

→ それでもヘッダの偽装は可能なので限界はあります。

以下参考URLの引用です。

---

# 全てのPHPコードをHTMLのように作成する

AddType application/x-httpd-php .htm .html

効率的にこれを使用するには、全てのPHPファイルの名前を上の拡張子に変更 する必要があります。これは、あいまいさに基づく形式のセキュリティですが、 欠点の少ない簡単な防衛策です。


2 ● tpichu
●10ポイント

http://php.s3.to/man/function.include.html

include

<?php

include ’

http://www.example.com/file.php?foo=1&bar=2

’;

?>

これで、できます。

ただ.htmlファイルがPHPを認識しないとどうしようもありません。

◎質問者からの返答

拡張子が.phpの場合には問題ないですが

.htmlでそれを実行した場合できないようです。


3 ● english
●50ポイント

>指定してあるアクセスを遮断する

というのがよく分かりませんが、

<body>内で

<img src=”

http://www.example.com/example.php

” width=1 height=1>

とすれば、画像アイコンも表示されません。もしくは、example.php内の、最後の出力部分で、

<?php

//アクセスを遮断するとかいう処理

//****************************

//最後に画像ファイルをブラウザに表示

$image_path = ”blank.gif”;

header(”Content-type: image/gif”);

$fd = fopen( $image_path, ”r” );

$contents = fread( $fd, filesize( $image_path ) );

fclose( $fd );

?>

などとすれば良いのではないでしょうか?

print $contents;

などとすれば良いのではないでしょうか? PHPやCGIでアクセスログを取る際にも同様な手法が使われていますね。

◎質問者からの返答

もう少し詳しく伺っても良いでしょうか?

アクセスを遮断する処理というのは

特定のIPアドレスを別のサイトへ飛ばすというイメージです。

$akukin = array(”111.222.333.444”,”555.666.777.888”);

$jump =$_SERVER[”REMOTE_ADDR”];

foreach($akukin as $value){

if(eregi(”$value”,$jump)){

header(”Location: http://yahoo.co.jp”);}

}

という感じでしょうか。

aaa.html内でこの処理を行いたいのです。

<body>内にはイメージタグを呼び出すとして、phpスクリプトにはどこを追記すればいいのでしょうか。


4 ● english
●50ポイント

http://www.broadband-xp.com/hidesource/cgi.html

Javascriptソースを外部ファイル化する(CGI編)

なるほど、アクセス遮断の意味が分かりました。そうであれば、先ほど紹介したimgタグでは駄目です。Javascript+PHPの連携で可能です。

<body>内より<head>〜</head>内に設置すれば最適ですが、それが無理であれば、

<body>

<script type=”text/javascript” src=”

http://www.example.com/example.php

”></script>

</body>

とします。

その上で、example.php内では、

<?php

$akukin = array(”111.222.333.444”,”555.666.777.888”);

$jump =$_SERVER[”REMOTE_ADDR”];

foreach($akukin as $value){

if(eregi(”$value”,$jump)){

header (”Content-Type: application/x-javascript”);

print ”location.href=’

http://www.yahoo.co.jp

Yahoo! JAPAN

’;”;

exit;

} else {

header (”Content-Type: application/x-javascript”);

print ”var abc=’’”;

exit;

}

?>

などとします。

content-typeをPHP内のヘッダー関数で指定してあげれば、Javascriptの外部ファイルの拡張子は必ずしも.jsでなければならいことはなく、CGIやPHPでJavascriptの外部ファイルを書くこともできます。参照URLにはperlやPHPでのJavascriptファイルの書き方を説明しています。

jsファイル内に

location.href=’

http://www.yahoo.co.jp

Yahoo! JAPAN

’;

と書いてあれば、すべてのユーザーがYahoo! Japanトップページにリダイレクトされますが、

それをIPアドレスで判断して、特定のIPにだけ、この

location.href=’

http://www.yahoo.co.jp

Yahoo! JAPAN

’;

が書かれたJSファイルが読み込まれるように設定するわけです。

ただし、このやり方ですと、特に<head>〜</head>にJavascript(<script type=”text/javascript” src=”

http://www.example.com/example.php

”></script>)が使えない場合、とにかく一旦はページが一瞬でも表示された後、ページ遷移します。上のサンプルスクリプトで言えば、Yahoo! Japanのトップページ。

また、Javascriptをoffにされていると、Yahoo!には移動せず、アクセス制限の役割を果たせません。

また、PHPのin_array関数を使ったほうがスマートにできるかもしれません。

http://jp2.php.net/in_array

PHP: in_array - Manual

◎質問者からの返答

test.htmlを作成しボディータグ内に以下を埋め込み

<script type=”text/javascript” src=”http://aaa.aaa/test.php”></script>

以下本文

test.phpには

$akukin = array(”自分のIPアドレス”);

$jump =$_SERVER[”REMOTE_ADDR”];

foreach($akukin as $value){

if(eregi(”$value”,$jump)){

header (”Content-Type: application/x-javascript”);

print ”location.href=’http://www.yahoo.co.jp’;”;

exit;

} else {

header (”Content-Type: application/x-javascript”);

print ”var abc=’’”;

exit;

}

?>

としましたがtest.htmlでは

>「実行しましたがエラーが出ました」が表示。

test.phpでは何も表示されませんでした。

非常にわかりやすい説明で感謝なのですが、私の理解力が足りないのか上手く動作しないようです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ