このサイトはPHPを独習する際に作成したスクリプトを基に、プログラム言語初心者のための入門講座として作成しました。PHPは初心者に親しみやすく、解りやすいプログラム言語です。これからプログラムを学ぶ人の参考になればと思います。
ウェブ・エディタ
自分で作ったホームページを見ていると、ちょっとした間違いに気がつくことがあります。文字が抜けていたり英語の綴りが間違っていたり、人に指摘されたりすると急いで直したいですよね。 でも家に帰ってPC立ち上げて、たくさんあるファイルから目的のものを探し、修正してそれからFTPでアップロード、ん〜〜〜っ!これがけっこう億劫です。 そこで自分のサイトならいつでもどこでもサイトの修正ができればいいのに!っと考えたのが今回のウェブエディタです。 ページ内に管理用のリンクを設け、パスワードでログイン、そのページのhtmlをすべて表示させて修正します。無料のホームページサービスなんかでもファイルマネージャとしてこの方法を取っているところもあります。 新しい手法はないのですが、これまでとは違う関数も使ってみました。
$html = file_get_contents("$filename");
ファイルのデータを全て読み込む関数です。1行づつ読みこむのではなく、一気に全てのデータを読み込みます。file()も一気に読みこむところは同じなのですが、配列に入れるのではなく、変数に全部入れてしまうのです。
file_put_contents("index.html".$data);
これに対し、一気に書きこむのがこの関数。しかし、この関数はPHP5から使えるようになりました。このサイトの環境はPHP4なので、残念ながら使用できません。
fwrite($handle, $data);
そこで書き込み使っているのがこの関数です。これも一気に書きこむことができるのですね。file_put_contentsとの違いは fopen(),fclose()が必要なことです。
$data = str_replace(’¥¥’,’’,$data);
formでデータを書きこむと、御丁寧に全ての"「クォーテイション」の前に¥マークを付けてくれるのです。表示には影響が出ないのですが、¥があるとそこにもまた¥マークを付けてくれるのですね。その¥マークを取り除くのがこの関数。¥¥となっているのは、エスケープシーケンスです。 なぜ¥マークが自動的に付いてしまうのかは、現在調査中です。
chmod($filename, 0777);
作成の環境ではわからないのですが、FTPでアップすると問題になるのがパーミッションです。PHPはCGIと違ってパーミッションの設定が要らないはずなのですが、それはPHPファイルに限ってのことで、データを書き込むファイルのパーミッションは設定が必要です。この関数はファイルのパーミッションを変更するための関数なのです。 このままファイルを書き込み可能な状態でほっておくのは当然危険でしょうから、ログオフの時点で再び書き込みができないように、パーミッションの設定を元に戻しています。 しかしこの関数有効でない場合が多いですね。いくつかのサーバーで試したのですが、使えないサーバーの方が多いです。
変更するファイルはスクリプト内で指定してあるのですが、これをブラウザから指定できる様にすると、どのファイルも自由に変更ができるようになるはずです。もちろんここではファイル名は指定できません。 できたらこのサイトの中味を全部扱えることになってしまいますからね。そう考えると、なんかちょっと危険性も感じます。パスワードはかけてありますが、非常に原始的なパスワードなのでセキュリティー的にはかなり低いと思います。 実際の使用にあたっては、個人の責任で行ってください。
⇒こんな感じ
これは誰でもこのページのソースを書き換えることができるので、実は掲載するのはかなり不安でした。いくらでもいたずらができますからね。でも90%以上の方が純粋に興味をもって見ていただいています。 しかし、どうしてもいたずらをしたがる方もいるようです。これまでにかなり悪質ないたずらもありました。そこで、スクリプトにはありませんが、いたずら対策も施しました。 これまで、このサンプルを見たときに被害に合った方もいるかと思われます。本当に申し訳ありませんでした。
|