• ベストアンサー

パスワードで管理でき、データのダウンロードをできるようにするには

サイトに常時アップした同じデータを、違う人にダウンしてもらう場合、パスワードを発行してダウンしてもらい、ダウンし終わったらすぐパスワードを変えて他の人がダウンできないようにしたいと計画しています。そういうことが楽々できるようになっている無料のサイトか、自分のサイトでそういうことが出来るようにするソフト?はないでしょうか。 私の方は、iMac DV SE(G3, 500MHz) OS 9.2.2 です。宜しくお願い致します。

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

  • ベストアンサー
  • SuperLe
  • ベストアンサー率44% (434/977)
回答No.1

サーバ側でPHPが使えるのであれば、制限時間付のパスワードを生成して、そのパスワードの有効期間内だと、ファイルがダウンロードできるようにするというのが出来ますね。 たとえば、パスワードの生成は次のようなスクリプト <?php // passcre.php $A=$_REQUEST["NEW"]+0; if ($A==1) { $F=fopen("passwordfile","a+"); $P=chr(rand(64,90)).chr(rand(64,90)).chr(rand(64,90)).chr(rand(64,90)).chr(rand(64,90)).chr(rand(64,90)).chr(rand(64,90)).chr(rand(64,90)); $T=time()+60*5; //有効期限5分の場合。60*60*24 とすれば1日となる。 fwrite($F,"$P=$T\r\n"); fclose($F); } echo "<H2>PASSWORD生成</H2>"; if ($A==1) echo "PASSWORD = \"$P\"<BR><HR>"; echo "<FORM ACTION=passcre.php METHOD=POST>"; echo "<INPUT TYPE=HIDDEN NAME=NEW VALUE=1>"; echo "<INPUT TYPE=SUBMIT VALUE=パスワード生成>"; echo "</FORM>"; ?> そして、ダウンロードは次のようなスクリプトを組みます。 <?php $P=$_SERVER["PATH_INFO"]; if ("$P"<>"") $P=substr($P,1); $F=fopen("passwordfile","r"); $R=0; while ($L=fgets($F)) { if ($i=strpos("$L","=")) { $PP=substr($L,0,$i); $TT=substr($L,$i+1); if ("$PP"=="$P" && ($TT>time())) { $R=1; break; } } } fclose($F); if ($R==0) { echo "パスワードが違います。<br>またはパスワードの有効期限が切れています"; exit; } //ここでダウンロードの処理"; //たとえば //Header("Content-Type: Application/Octet-stream"); //Header("Length: ファイルのサイズ"); //readfile("出力するファイル"); ?> Linux+apache win32+ANHTTP で試しましたところうまく動いています。 Macはもっていないので試していませんが、PHPとWEBサーバが動くのであれば大丈夫だと思います。 ただし、パスワードファイルは、外から直接覗けない所に持っていく必要はあります。

sssssss
質問者

お礼

SuperLeさん 詳しくおしえていただきありがとうございます。 難しいですが試してみます。 ありがとうございました。

その他の回答 (1)

  • SuperLe
  • ベストアンサー率44% (434/977)
回答No.2

#1です。補足です。 ダウンロードファイルのパスワードの指定方法は次のようにします。 http://サイトのURL/スクリプト名.php/パスワード たとえば、スクリプトが passdown1.php でパスワードが @ABCDEFG だとすると、http://サイトのURL/passdown1.php/@ABCDEFG となります。 また、古いパスワードは適当な時期にクリーンアップしてください。

関連するQ&A