人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

直リンクではアクセスできないファイルdata.csvをダウンロードできるような認証ページを作りたいのですが、.htaccess編集不能なため、ベーシック認証はできませんでした。その代わりとなるようなCGIはありますか?

●質問者: xiaotai
●カテゴリ:コンピュータ
✍キーワード:.htaccess CGI CSV アクセス ダウンロード
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● NYRL
●10ポイント

http://homepage1.nifty.com/~heppoko/

Heppoko House Light (frame version)

ここのファイルアップロードCGIでどうでしょうか?

◎質問者からの返答

ちょっと高機能過ぎます。。。

CGIの勉強もかねて、シンプルなものだとありがたいのですが。

でも、これはこれで何かに使えそうなのでφ(.. )


2 ● junono
●10ポイント

http://www.rescue.ne.jp/

CGI RESCUE - ネットサーフレスキューWeb裏技

ここのアクセス制限内にあるCGIでパスワード制限ではどうでしょうか?

◎質問者からの返答

テキストやhtmlを中に埋め込んで表示するものになってしまうようなので、csvファイルを”ダウンロード”するのは無理な気がします。(ダウンロードページをアクセス制限するだけだと、csv直リンクでダウンロードできてしまうので)


3 ● aki73ix
●150ポイント

http://nifberry.727.net/test/hatena168.htm

変数のHTTP_REFERERを使用したサンプルです

ファイル番号で処理するので、ファイル名が漏れることもないでしょう

(ファイル名をこの例のように置換すればOKです)


#!/usr/local/bin/perl

  $mthd=$ENV{'REQUEST_METHOD'};

  local($qu,@in,$key,$val);

  if($mthd eq 'GET'){

     $qu=$ENV{'QUERY_STRING'};

  }

  elsif($mthd eq 'POST'){

     read(STDIN,$qu,$ENV{'CONTENT_LENGTH'});

  }

  *query = decode();

 #リファー取得

  $host=$ENV{'HTTP_REFERER'};

 #リファーからサイトの確認

  if(index($host,"nifberry.727.net") gt -1){

    print "Content-Type: text/download¥n";

 #ファイル番号からファイルを取得

   if($query{'FILENO'} == 1){

       print "Content-Disposition: inline; filename=¥"test1.csv¥"¥n¥n";

       open(FILE, "hatena55.csv");

    }

    elsif($query{'FILENO'} == 2){

       print "Content-Disposition: inline; filename=¥"test2.csv¥"¥n¥n";

       open(FILE, "test.csv");

    }

    

 #ファイル送信

    @que = <FILE>;

    foreach $ax  (@que){

      print qq($ax);

    }

    close(FILE);

  }

  else{

 #エラー処理

      print qq(Content-type: text/html¥n¥n);

      print qq(不正アクセスです);

  }

 exit;

sub decode

{

  local(@query)=split(/&/,$qu);

  foreach(@query){

    tr/+/ /;

    tr/;/ /;

    tr/`/ /;

    tr/|/ /;

    ($key,$val)=split(/=/);

    $key=~s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("c",hex($1))/ge;

    $val=~s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("c",hex($1))/ge;

    $val=~s/¥r¥n/¥n/g;

    $vin{$key}=$val;

  }

  return *vin;

}

http://nifberry.727.net/test/csvget.cgi?FILENO=1

ためしに直接URLにアクセスすると、このようにはじかれます

◎質問者からの返答

!!

わざわざありがとうございます!

助かりましたー。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ