電子書籍の厳選無料作品が豊富!

12/21の質問の続きです。
間違って締め切りを押しちゃいまして、再度質問します。

Wr5様ありがとうございます。
色々調べてみましたが、原因はphpにあるみたいです。

page.phpファイルの以下の部分が問題点だと思います。
<param name="movie" value="dog-<? if ($setlesson < 2) { echo $setlesson; } else echo "2008";?>.swf?setlesson=<? echo $setlesson; ?>" />

レンタルサーバの場合、例え犬写真4を選択すると、if文のelseが成立して
dog-2008.swf?=setlesson=4 になってflashもうまく表示されますが、(正しい処理です。)
でも、自宅サーバだと、dog-.swf?=setlesson= になってしまいflashが表示されません。
なんだか、php問題だと思いますが。
とにかく、これで、flashが再生できないです。
fedora 11での設定の差異だと思いますが、、、まったくわかりません。相当困っています。

以下は詳細ソースです。

●index.phpは下記の通りです。
----------------------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>犬写真</title>
</head>
<body>
<a href="dog.php?setlesson=1">犬写真1</a><br/>
<a href="dog.php?setlesson=2">犬写真2</a><br/>
<a href="dog.php?setlesson=3">犬写真3</a><br/>
<a href="dog.php?setlesson=4">犬写真4</a><br/>
<a href="dog.php?setlesson=5">犬写真5</a><br/>
</body>
</html>

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

●page.phpは下記の通りです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "​http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="​http://www.w3.org/1999/xhtml"​ xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>犬写真</title>
</head>
<body bgcolor="#333333">
<!--url's used in the movie-->
<!--text used in the movie-->
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="​http://fpdownload.macromedia.com/pub/shockwave/c …
width="500" height="500" id="dog" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="dog-<? if ($setlesson < 3) { echo $setlesson; } else echo "2008";?>.swf?setlesson=<? echo $setlesson; ?>" />
<param name="quality" value="best" />
<param name="bgcolor" value="#333333"/>
<embed src="dog-2008.swf?setlesson=<? echo $setlesson; ?>" quality="best" bgcolor="#333333" width="500"
height="500" name="dog" align="middle" allowScriptAccess="sameDomain"
type="application/x-shockwave-flash" pluginspage="​http://www.macromedia.com/go/getflashplayer"​ />
</object>
<br>
<a href="kuken-dig-grey.index.php">メイン画面に戻る</a>
</body>
</html>

A 回答 (3件)

php.iniファイルに register_globals  の設定がありますので、これを変更してapacheを再起動です。



また コンテンツのディレクトリに置いた .htaccessファイルで設定も可能です。
(.htaccessでの変更が許可されている設定なら)

ただ、これを設定すると、セキュリティ上の問題が発生します。
また、PHP6からはこの設定自体が廃止されます。

なので、register_globalsがOffでも動くようにプログラミングするのが望ましいと思います。
例えば、サンプルのプログラムや、参考書に
GET/POST/COOKIEから入ることを期待している $xxx という変数名があれば、そこを
$_GET['xxx']や$_POST['xxx']や$_COOKIE['xxx']に 読み替えてプログラムします。


そうしておけば、 PHP4.2未満のサーバーでも動きますし、
サーバーがregister_globalsがOnでもOffでもどちらでもこの問題にははまらない、
可搬性の高いプログラムになりますので。
    • good
    • 0

> Onにするとどのようなセキュリティー問題がありますか?



PHPの作り方にもよりますが、最悪、サーバーを乗っ取ることもできます。

そうなると、
個人情報が漏れたり、サイトが書き変わったり、
知らない間に SPAM発行サーバーや踏み台に使われたり、
違法ファイルの供給に悪用されて、裁判所から呼び出されたり
と、嬉しくないことが、あるやもしれません。
(「自分の子供に限って」が一番危ないのと、同じですね)
    • good
    • 0
この回答へのお礼

superside0
おかげさまで、いろいろ勉強になりました。
ありがとうございます!

お礼日時:2009/12/22 17:45

register_globalsがONのサーバーとOFFのサーバーの違いでしょう。


#古い参考書でも使われているのでしょうか?

このphpでいうと、

$setlesson

$_GET['setlesson']

に全箇所書き換えると、php4.2以降のサーバーで動くようになると思われます。

この回答への補足

superside0様ありがとうございます。
どのファイルでそのような設定を行ったらよいでしょうか?
すみません。まったく初心者です。

そのほか

レンタルサーバのを見ると、
register_globals関しては以下の設定していました。
Directive     Local Value    Master Value
register_globals    On        Off

自宅サーバのはどこから確認できるんでしょうか?
よろしくお願いいたします。

補足日時:2009/12/22 15:33
    • good
    • 0
この回答へのお礼

superside0様ありがとうございました。

/etc/php.ini

register_globalsを OffからOnしてやっと、
flahsが見れるようになりました。
うれしくて涙でそうです!

でも、ネット上をregister_globalsキーワードで検索すると、
セキュリティーのことでOffにしたほうがいい文章もありましたが、、
Onにするとどのようなセキュリティー問題がありますか?

お礼日時:2009/12/22 16:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!