• ベストアンサー

phpファイルを直接参照できないようにするには?

phpファイルでMySQLのDBにアクセスし、 contents=aaaaa&title=bbbbb&update_at=ccccc という形でファイルに表示させ、それをFLASHで読み込むということ ができるようになりました。 しかしこのphpファイルのURLをアドレスバーに直打ちされてしまうと、 contents=aaaaa&title=bbbbb&update_at=ccccc が丸見えになってしまいます。 この内容はFLASHを通してのみ参照できるようにしたいのですが、 phpファイルの直打ち参照を防ぐにはどうすればいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.4

#2です。 少しだけわかったような気がします。 > FASHのbrowser.swfを介してみられるようにしたい考えています。 LoadVars クラスの sendAndLoad メソッドのことをおっしゃっているのではないかと思います。 私が LoadVars .sendAndLoad に関して回答すると, たいてい,ロクでもないことになってしまいますので, とりあえず,すみませんが検索してみてください↓。 http://www.google.co.jp/search?hl=ja&q=Loadvars+sendAndLoad&lr=lang_ja ただし, > contents.phpのアドレスを直打ちしたときは参照できないようにし、 > FLASHを介してみるときだけ閲覧できるようにするには > 何か手段はないでしょうか? contents.phpのアドレスを直打ちしたときは参照できないようにする方法は, PHP の問題ですから,よくわかりませんよ。 Get では受け付けないとかいう方法があれば可能かもしれませんが, その辺はよくわかりません。

yossi617
質問者

お礼

わかりました! #2さんの回答の「適当な変数を入れて・・・」という部分がわからなかったのですが、#3さんの補足を受けて、FLASH側にflagという 適当な名前のLoadvarsのインスタンスを作り、 my_lv = new LoadVars(); my_lv.onLoad = function(success) { } }; my_lv.flag = "true"; my_lv.sendAndLoad(url,my_lv,"POST"); とし、php側の表示を if(isset($_POST['flag'])){ } で囲むことで実現できました。 ありがとうございました。

その他の回答 (3)

noname#39970
noname#39970
回答No.3

>****/contents.php と打ち込まれて参照されると困ってしまいます。 だからNo2はPOSTで投げたら?と言っている。 PHPで GETであったり、POSTに何も無い又は入っていなければならない情報が無い ならば何もせず終了 とすれば済むのでは?

noname#35109
noname#35109
回答No.2

変数名をわけのわからない名前にして, (わけのわからない名前にしなくても,ちょっとユニークな名前だと普通はわかりませんが,) POST で送信すれば良いだけではないでしょうか。 ランキングの不正をさせないスクリプト http://oshiete1.goo.ne.jp/qa2711723.html  ↑教えて!goo  ↓OKWve (同じです) http://okwave.jp/qa2711723.html FLASHからアプリケーションの呼出し http://oshiete1.goo.ne.jp/kotaeru.php3?q=1081049  ↑教えて!goo  ↓OKWve (同じです) http://okwave.jp/qa1081049.html その他 http://oshiete.goo.ne.jp/search/search.php?status=select&MT=post&ct_select=1&ct0=205&ct1=221&ct2=564 Flash上の, 最後のボタン?をムービークリップにして, そのムービークリップ内に変数をあらかじめ入れて置いて, そのムービークリップに on (release) { this.getURL("○○.php", "_self", "POST"); } のように, ムービークリップ.getURL() の形で書くと, 不要な変数は送信されませんから, 変数がたくさんある場合も無駄な変数が送られることもありません。 ------------------------------------------ Flash ではありません,1つの例です。 ある検索エンジンの懸賞クイズみたいなものがかつてあって, そのときは, まずクイズ出題画面(PHP)にアクセスしたとき, まず,「固有の番号」と「時刻」をユーザーに与えておいて, クイズに解答したとき, クイズの「答え」と, 「固有番号」と, 「時刻」が○分以内の時のみ『正解!』のようにしていました。 固有番号はランダムですから誰にもわかりません。 ランダムで誰もわからない数を取りあえずゲーム開始時(クイズ開始時)にユーザーに与えるとともに, サーバー上にも記録として残しておいて最後に照合する形だと思います。 凝ればさらに色々方法があると思いますし, そういうこと(技術)は Flash がこの世に出る前からすでに確立されているものですから, その辺を色々調べていただくと色々方法が見つかると思います。 そういうことをしなくても, 普通は,POST だけで大丈夫だとは思いますが。 http://www.google.co.jp/search?hl=ja&q=post+%E9%80%81%E4%BF%A1&lr=

yossi617
質問者

補足

質問がわかりにくかったようですいません。 実現したいことは、aaaaaやbbbbb、cccccといった内容はユーザにコピーさせたくない情報なのでFLASHのbrowser.swfを介してみられるようにしたい考えています。 contents.phpというファイルはmysqlからのデータ取得して 画面に表示させる機能があります。urlに/contents.phpと打ち込むと 画面上にcontents=aaaaa&title=bbbbb&update_at=cccccと表示されます。 一方FLASHはbrowser.swfというファイルで、この中のテキストフィールドにcontentsやtitle、update_atといった項目を出力させる仕組みに なっています。 よって、ユーザにcontents.phpのアドレスが知られ、直接アドレス欄に ****/contents.php と打ち込まれて参照されると困ってしまいます。 contents.phpのアドレスを直打ちしたときは参照できないようにし、 FLASHを介してみるときだけ閲覧できるようにするには何か手段はないでしょうか?

noname#39970
noname#39970
回答No.1

php側でrefererを調べる とか

yossi617
質問者

補足

ありがとうございます。 チャレンジしてみたのですが、URLを直打ちした場合のrefererと FLASHから取得しにいった場合のrefererは両方ともデータが 取得できないようで、refererで振り分けることはできないようです。

専門家に質問してみよう