※このサンプルの解説は、「CGI(Perl)の解説」をすべて読み終えてる方を前提としています。
  後になるほど省略されている場合がありますのでできるだけ順番に読んでください。
  また、実行に際しては、サーバーでPHPが利用できる事を前提に解説しています。

■ ファイルのコピーツール

このツールはサーバーアップしているファイルやサーバー側で自動作成されたファイルをコピーして新しいファイルを作成します。

サーバー側のファイルは、FTPで接続してもコピーができません。
したがって、コピーを作るには、一度ダウンロードした後名前を変更し、そのファイルをアップロードするという方法を取らないといけません。
これはいろんな意味で手間がかかります。
小さいサイズのファイルならまだいいですが、ファイルサイズが大きくなると結構時間もかかります。

このツールを使えばサーバー側でダイレクトに処理しますので高速ですし、ブラウザだけで処理が完結します。
このツールを使うに当って、「セキュリティ」面で注意が必要ですが、このサンプルでは「ユーザーID」と「パスワード」で保護してます。

【 解    説 】

まず、「HTML」でコピー元のファイル名と、コピー後のファイル名を入力するフォームを作ります。
また、この処理を勝手に使われる事を避けるため、「ユーザーID」と「パスワード」の入力ボックスも用意し、管理者権限でなければ使用できないようにします。

入力フォームの記述サンプルは次のような感じ。
<form method="post" action="fcopy.php"> コピー元のファイル名:<input type="text" name="filnam1"><br> コピー後のファイル名:<input type="text" name="filnam2"><br><br> ユーザー名:<input type="text" name="userid"><br> パスワード:<input type="password" name="userpwd"><br><br> <input type="submit" value="実行"> </form> パラメータの取得方法は「PHPサンプル」−「投稿フォームの作成」で解説していますのでここでは省略します。

ファイルをコピーする命令は、次のような記述方法を取ります。
copy((コピー元のファイル名), (コピー後のファイル名));

具体的には、次のような感じです。
copy("page1.html","page2.html");

取得したパラメータを使用してファイルをコピーする場合は、次のように記述します。
copy($_POST[filnam1],$_POST[filnam2]);

「ユーザー名」「パスワード」のチェックについては「PHPサンプル」−「ファイルのパーミッション変更ツール」で解説してますのでそちらを参照してください。
これに、結果表示なども組み込むと次のような感じになります。
if (($_POST[userid] == $userid)   and ($_POST[userpwd] == $userpwd)){   if (copy($_POST[filnam1],$_POST[filnam2]) === FALSE){     print "$_POST[filnam1] を $_POST[filnam2] にコピーできません。";   }else{   print "$_POST[filnam1] を $_POST[filnam2] にコピーしました。";   } }else{   print "<h3>ユーザーID、パスワードが違います。</h3>"; }

では、まず入力用のフォームを「HTML形式」で作成します。
ファイル名は「fcopy.html」とするといいでしょう。

【記述サンプル】
<HTML> <HEAD> <title>ファイルのコピー</title> </HEAD> <BODY> <div align="center"> <h4>【ファイルのコピー】</h4> </div> <table cellpadding="8" border="1" align="center"> <tr> <td bgcolor="#eeeeff"> <form method="post" action="fcopy.php"> コピー元のファイル名:<input type="text" name="filnam1"><br> コピー後のファイル名:<input type="text" name="filnam2"><br><br> ユーザー名:<input type="text" name="userid"><br> パスワード:<input type="password" name="userpwd"><br><br> <input type="submit" value="実行"> </form> </td></tr></table> <br> </BODY> </HTML>

次に、入力フォームのデータを取得してパーミッションを変更するPHPを作成します。
ファイル名は「fcopy.cgi」にしてください。

【記述サンプル】
<?php print <<< END_DOC<HTML><HEAD> <title>ファイルのコピー</title> </HEAD><BODY> END_DOC; $userid = "test"; $userpwd = "test"; if (($_POST[userid] == $userid)   and ($_POST[userpwd] == $userpwd)){   if (copy($_POST[filnam1],$_POST[filnam2]) === FALSE){     print "$_POST[filnam1] を $_POST[filnam2] にコピーできません。";   }else{     print "$_POST[filnam1] を $_POST[filnam2] にコピーしました。";   } }else{   print "<h3>ユーザーID、パスワードが違います。</h3>"; } print <<< END_DOC</BODY></HTML> END_DOC; ?>
◆実行結果について

上記のサンプルをそれぞれ「fcopy.html」「fcopy.php」という名前で保存して実行してみてください。

実行結果はこちらをクリックしてください。
このサンプルはファイルコピーの命令を止めてますので、結果が表示されるだけで、実際にファイルがコピーできるわけではありません。
なお、実行結果については、各々のサーバーの環境、ユーザーの環境にによって内容は変わってきます。


page update:2010/01/23 20:32

Copyright (c) 2000-2009, all Rights Reserved & Produced by atom