(現在 過去ログ7 を表示中)

HOME HELP 新着記事 トピック表示 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■8523 / inTopicNo.1)  連続投稿とサイズ制限について
  
□投稿者/ うっぺれ -(2004/01/30(Fri) 23:15:09)
    某画像アップ掲示板を運営している者です。
    利用者の増加に伴い、現在利用しているimageboadからの変更を検討しております。
    こちらのcgi(Child Tree)の評判が良いので試験設置してみたのですが、どうしても理想まで足りない機能が2つほどあります。
    1.連続投稿制限について
    過去ログを検索した中の話題では、次の投稿まで〜分制限という設定でしたが、私の希望は24時間以内に〜回まで制限という形を取りたいと思っております。
    2.アップロードできる画像サイズ制限について
    これについては本当に希望の希望なのですが、アップロードできる画像のサイズ(例えば100*100Pixのみ)というサイズに限定したいのです。
    set.cgiを覗いてみるとjpegやgifのサイズ取得云々という記載があるのでなんとかできないものかと思っております。

    自分の知識不足の為にこのような質問をする事となってしまいましたが、なんとか実現したい機能ですのでアドバイス頂ければ幸いです。
    宜しくお願い致します。
引用返信 [メール受信/OFF] 削除キー/
■8528 / inTopicNo.2)  Re[1]: 連続投稿とサイズ制限について
□投稿者/ りゅういち -(2004/01/31(Sat) 23:51:17)
http://www.cj-c.com/
    No8523に返信(うっぺれさんの記事)
    > 1.連続投稿制限について
    > 過去ログを検索した中の話題では、次の投稿まで〜分制限という設定でしたが、私の希望は24時間以内に〜回まで制限という形を取りたいと思っております。

    それは難しいですね。cookie等を用いて投稿回数の記録か、
    ログに投稿回数などを取得しておかなければなりません。

    > 2.アップロードできる画像サイズ制限について
    > これについては本当に希望の希望なのですが、アップロードできる画像のサイズ(例えば100*100Pixのみ)というサイズに限定したいのです。

    1139行目に2796〜2832行目
    if($ico=~/.gif$/i){ #GIF
     :
    }
    までを挿入してそこにある $ico を $file に変更、
    if($IW >= 横幅 || $IH >= 縦幅){&er_("サイズが大きすぎます!");}
    でできると思います。
引用返信 [メール受信/OFF] 削除キー/
■8674 / inTopicNo.3)  サイズ制限が機能しません。
□投稿者/ R -(2004/02/14(Sat) 20:41:05)
    最初の質問者ではありませんが、便乗で質問させて下さい。
    
    > 1139行目に2796〜2832行目
    > if($ico=~/.gif$/i){ #GIF
    >  :
    > }
    > までを挿入してそこにある $ico を $file に変更、
    > if($IW >= 横幅 || $IH >= 縦幅){&er_("サイズが大きすぎます!");}
    > でできると思います。
    
    上記の修正を行ってみたところ、設定した値以上のファイルをアップしても
    エラーチェックが働きません。
    
    
    	if($file=~/.gif$/i){ #GIF
    		open(GIF,"$i_dir/$file");
    		binmode(GIF);
    		seek(GIF,6,0);
    		read(GIF,$size,4);
    		close(GIF);
    		($IW,$IH)=unpack("vv",$size);
    	}elsif($file=~/.png$/i){ #PNG
    		open(PNG,"$i_dir/$file");
    		binmode(PNG);
    		seek(PNG,16,0);
    		read(PNG,$Pw,4);
    		read(PNG,$Ph,4);
    		close(PNG);
    		$PW=unpack("H*",$Pw);$IW=hex($PW);
    		$PH=unpack("H*",$Ph);$IH=hex($PH);
    	}elsif($file=~/.jpg$|.jpeg$/i){ #JPEG
    		open(JPG,"$i_dir/$file");
    		binmode(JPG);
    		read(JPG,$Top,2);
    		while (JPG) {
    			read(JPG,$Top,4);
    			($mark,$Cell,$Lar)=unpack("aan",$Top);
    			if($mark ne "\xFF"){$IW=0; $IH=0; last;}
    			elsif((ord($Cell) >= 0xC0) && (ord($Cell) <= 0xC3)){
    				read(JPG,$Top,5); ($IH, $IW)=unpack("xn2",$Top); last;
    			}else{read(JPG,$Top,($Lar-2));}
    		}
    		close(JPG);
    	}elsif($file=~/.bmp$/i){ #BMP
    		open(BMP,"$i_dir/$file");
    		binmode(BMP);
    		seek(BMP,18,0);
    		read(BMP,$size,8);
    		close(BMP);
    		($IW,$IH)=unpack("V2",$size);
    	}
    
    	if($IW >= 120 || $IH >= 160){&er_("サイズが大きすぎます!");}
    }
    
    とやってみたのですが、チェックが働いていないようなので、試しに
    &er_("サイズが大きすぎます!");
    だけを書いてみるとエラーが出ます(当然ですが・・)
    なので上記の方法では $IW $IH に値が入っていないのでは?と思います。
    残念ながら自分の技量ではここまでしかわかりません。
    どうかご教授お願い致します。

引用返信 [メール受信/OFF] 削除キー/
■8678 / inTopicNo.4)  Re[3]: サイズ制限が機能しません。
□投稿者/ りゅういち -(2004/02/15(Sun) 04:23:08)
http://www.cj-c.com/
    No8674に返信(Rさんの記事)
    > > if($IW >= 120 || $IH >= 160){&er_("サイズが大きすぎます!");}
    > &er_("サイズが大きすぎます!");
    > だけを書いてみるとエラーが出ます(当然ですが・・)
    > なので上記の方法では $IW $IH に値が入っていないのでは?と思います。

    とりあえず、必ずエラーが出る方法で
    &er_("サイズが大きすぎます! / (高さ$IW / 幅$IH)");
    として、数値が入っているか確かめてください。

    あと、これは gif png jpeg bitmap 形式の画像しか適用できませんので
    注意してください。
引用返信 [メール受信/OFF] 削除キー/
■8683 / inTopicNo.5)  アドバイス通り試してみましたが値が出ません。
□投稿者/ R -(2004/02/15(Sun) 20:06:42)
    > とりあえず、必ずエラーが出る方法で
    > &er_("サイズが大きすぎます! / (高さ$IW / 幅$IH)");
    > として、数値が入っているか確かめてください。
    >
    > あと、これは gif png jpeg bitmap 形式の画像しか適用できませんので
    > 注意してください。

    アドバイスにあったように試してみましたが、"{ 〜 }"の中に置いても
    外に置いても縦横の値だけが表示されません。

    「サイズが大きすぎます! / (高さ / 幅」とだけ表示されます。
    他に試してみることはありますか?
引用返信 [メール受信/OFF] 削除キー/
■8684 / inTopicNo.6)  補足です。
□投稿者/ R -(2004/02/15(Sun) 21:03:43)
    2004/02/15(Sun) 21:20:03 編集(投稿者)
    〜略
    
    	}elsif($file=~/.bmp$/i){ #BMP
    		open(BMP,"$i_dir/$file");
    		binmode(BMP);
    		seek(BMP,18,0);
    		read(BMP,$size,8);
    		close(BMP);
    		($IW,$IH)=unpack("V2",$size);
    	}
    
    &er_("サイズが大きすぎます!");
    
    }
    
    ・・・の場合はエラーが出ません。
    これを、
    
    〜略
    	}elsif($file=~/.bmp$/i){ #BMP
    		open(BMP,"$i_dir/$file");
    		binmode(BMP);
    		seek(BMP,18,0);
    		read(BMP,$size,8);
    		close(BMP);
    		($IW,$IH)=unpack("V2",$size);
    	}
    }
    
    &er_("サイズが大きすぎます!");
    
    ・・・とするとエラーが表示されます。(変数$IW,$IHを書いた場合も同様)
    未熟ながら自分でも調べてみましたが、変数の有効範囲(グローバル変数?)と関係あるのでしょうか?
    見当違いなことを言っているのかもしれませんが、アドバイスをお願いします。
    あと勉強不足ながら以下のような事も試してみましたが、やはりダメでした。
    
    if(-e "$i_dir/$file"){
    
    	if($file=~/.gif$/i){ #GIF
    		open(GIF,"$i_dir/$file");
    		binmode(GIF);
    		seek(GIF,6,0);
    		read(GIF,$size,4);
    		close(GIF);
    		($IW,$IH)=unpack("vv",$size);
    	}elsif($file=~/.png$/i){ #PNG
    		open(PNG,"$i_dir/$file");
    
    〜途中略
    
    	}elsif($file=~/.bmp$/i){ #BMP
    		open(BMP,"$i_dir/$file");
    		binmode(BMP);
    		seek(BMP,18,0);
    		read(BMP,$size,8);
    		close(BMP);
    		($IW,$IH)=unpack("V2",$size);
    	}
    
    &er_("サイズが大きすぎます! / (高さ$IW / 幅$IH)");
    
    }
    }
    

引用返信 [メール受信/OFF] 削除キー/
■8688 / inTopicNo.7)  Re[6]: 補足です。
□投稿者/ りゅういち -(2004/02/16(Mon) 00:03:54)
http://www.cj-c.com/
    No8684に返信(Rさんの記事)
    > > ・・・とするとエラーが表示されます。(変数$IW,$IHを書いた場合も同様)
    > 未熟ながら自分でも調べてみましたが、変数の有効範囲(グローバル変数?)と関係あるのでしょうか?
    > 見当違いなことを言っているのかもしれませんが、アドバイスをお願いします。

    とりあえず、その改造したものをtxtにしてサーバにアップして、URLを教えてください。
    ちょっと入れるところが違うのかもしれません。
引用返信 [メール受信/OFF] 削除キー/
■8689 / inTopicNo.8)  テキスト形式でアップしました。
□投稿者/ R -(2004/02/16(Mon) 00:31:51)
    > とりあえず、その改造したものをtxtにしてサーバにアップして、>URLを教えてください。
    > ちょっと入れるところが違うのかもしれません。

    すみません。お手数おかけします。
    ここにアップしたので見てもらえますか?
    ttp://www.42ch.net/UploaderSmall/source/1076858898.txt

引用返信 [メール受信/OFF] 削除キー/
■8695 / inTopicNo.9)  Re[8]: テキスト形式でアップしました。
□投稿者/ りゅういち -(2004/02/17(Tue) 00:41:51)
http://www.cj-c.com/
    No8689に返信(Rさんの記事)
    > > すみません。お手数おかけします。
    > ここにアップしたので見てもらえますか?
    > ttp://www.42ch.net/UploaderSmall/source/1076858898.txt

    if($FORM{'URL'}){
    の直前にいれてみてください。
    上記の場所だと、プレビュー時にしかチェックできません。
引用返信 [メール受信/OFF] 削除キー/
■8704 / inTopicNo.10)  画像サイズの値が取得できません。
□投稿者/ x -(2004/02/17(Tue) 23:18:11)
     
    > if($FORM{'URL'}){
    > の直前にいれてみてください。
    > 上記の場所だと、プレビュー時にしかチェックできません。
    
    指示いただいた箇所に入れて確認しましたが、以下のようになります。
    
     ERROR-サイズが大きすぎます! / (高さ / 幅)
    
    ・・・となって、強制でエラーになっても取得しているはずの縦横の値
    の引数が&er_に渡されていないようです。
    また&er_の前にif〜の条件分岐を付け足すと強制エラーが働かなくなって
    しまいました。
    自分が理解できる範囲では画像フォーマットに応じて取得した縦横の値
    が$IW、$IHにそれぞれ代入され、それをエラーサブルーチンを呼び出す
    際の引数として&er_に渡されるのが正解ですよね?
    ソースを眺めていますがこれ以上はどうしてもわかりません。
    
    尚、テストとしてアップロードしている画像は同一のものを使用し、
    ソースに改造を加えない状態で正常にアップロードが出来て、
    アップロード後にスレッド表示画面でも画像サイズ640x480→320x240等
    と取得された値が表示されるものを使用しています。
    
    念のため指示いただいた修正を行ったソースを書いておきます。
    
    ttp://www.42ch.net/UploaderSmall/source/1077027386.txt

引用返信 [メール受信/OFF] 削除キー/
■8708 / inTopicNo.11)  Re[10]: 画像サイズの値が取得できません。
□投稿者/ りゅういち -(2004/02/18(Wed) 18:20:49)
http://www.cj-c.com/
    No8704に返信(xさんの記事)
    > > 指示いただいた箇所に入れて確認しましたが、以下のようになります。
    > >  ERROR-サイズが大きすぎます! / (高さ / 幅)
    > > ・・・となって、強制でエラーになっても取得しているはずの縦横の値
    > の引数が&er_に渡されていないようです。

    エラーメッセージだけでなく、サイズチェックのコードも
    一つしたの部分に移動してください。
引用返信 [メール受信/OFF] 削除キー/
■8711 / inTopicNo.12)  Re[11]: 画像サイズの値が取得できません。
□投稿者/ R -(2004/02/18(Wed) 19:35:37)
    > エラーメッセージだけでなく、サイズチェックのコードも
    > 一つしたの部分に移動してください。

    出来ました!!
    理由もわかりました。
    >>8695のアドバイスにあるように、サイズチェックのコードも
    同様にしないとプレビュー時にしかサイズチェックが働かない
    からなのですね。
    こんな単純なことに気がつかないとは・・・恥ずかしいです。
    お手間取らせて申し訳ありませんでした。
    心より感謝致します。
    簡単なことは自分で出来るようにもっと勉強します。
    尚、「解決済」のチェックは最初の質問者からの返答がないの
    で保留させていただきます。
    あと同様な改造を施したい方のために成功したソースを書いて
    おきます。

    投稿する画像の縦横サイズに制限を設ける場合の改造例。
    (※動作確認済のもの)
    ttp://www.42ch.net/UploaderSmall/source/1077099899.txt
引用返信 [メール受信/OFF] 削除キー/
■8777 / inTopicNo.13)  Re[12]: 画像サイズの値が取得できません。
□投稿者/ 通りすがりの2ちゃねらー -(2004/03/01(Mon) 04:28:51)
http://pc2.2ch.net/test/read.cgi/php/1063780103/
    > 尚、「解決済」のチェックは最初の質問者からの返答がないの
    > で保留させていただきます。

    最初の質問者は2ちゃんねるで改造してもらったそうだ。
    【 スクリプト改造工房 PART 7 】
    http://pc2.2ch.net/test/read.cgi/php/1063780103/790-911

    替わりに漏れが解決済みをチェック!
解決済み!
引用返信 [メール受信/OFF] 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Pass/

HOME HELP 新着記事 トピック表示 検索 過去ログ

- Child Tree -