PMCJは、CGIを中心としたプログラムの配布及び製作やレンタルサービスをしているサイトです。
広告
Sato IT Studio - PMCJ
Information Profile Contact PMCJ BBS SiteMap
  HOME  >  HOW TO   >  CGI/SSI COLOR HTML

RSSフィード

Services
レンタル
プログラム
フリー素材
How To
Links
Users



QRコード

携帯読取QRコード
読取未対応の方はこちら

PMCJ 携帯用HP
http://www.pmcj.com/p/

※ 3キャリア(DoCoMo SoftBank au)の他、ClubAirH" 及び H"-link でもご覧になれます。

※ 当サイト配布一部ソフトは、下記各サイトからもダウンロード出来ます。

Vector

ダウンロード@nifty

フラットワールドソフト

 2017年 6月 
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

EPSLON

RapidSSL







How To - CGI設置簡易手引き -

CGI / SSI

簡単なカスタマイズ

CGIカスタマイズ ≫        
    ここでは、簡単に出来るカスタマイズとして幾つかの例を上げます。

  1. メールヘッダ(「subject:」「To:」「From:」)のデコード

    メールヘッダ(「subject:」「To:」「From:」)のデコードをISO-2022-JP、MIME encoded-wordとして、メール文字化けを防ぐ方法です。

    (A) 生田さん開発 mime_pls(Perlライブラリ)の mimew.pl を使った、メールフォーム
       ダウンロード : mime_pls
    (B) 当サイト配布の b64mclib.pl を使った、メールフォーム
       ダウンロード : Base64 Mail Convert library

    Web Mail [E]での例1
    #日本語コード変換ライブラリの場所
    require './jcode.pl';
    require './mimew.pl'; (A)の場合
    require './b64mclib.pl'; (B)の場合
    #
          ・
       省略
          ・
    sub sendmail{
    
    	&timeget;
    	$formco = @SNADATE;
    	$formco -= 1;
    
    	&jcode'convert(*subje,'jis'); (B)の場合削除可
    	$subje = &mimeencode($subje); (A)の場合
    	b64mc::Bace64Encode(\$subject, 'jis', 1); (B)の場合
    	&jcode'convert(*title,'jis');
    	&jcode'convert(*TIME,'jis');
    
    赤文字の部分が、追加する記述部分です。

    ディフォルトでは、jis変換でメールヘッダに書き込んでいる為、2byte文字(日本語)をタイトルに使用している場合はOS、メーラーによっては文字化けの原因となります。

    で、上記のようにデーコードをすると回避出来ますのでお試し下さい。


    Web Mail [E]での例

    次は、差出人メールにもこれを利用して、ニックネーム付きメールにしてみます。
    #日本語コード変換ライブラリの場所
    require './jcode.pl';
    require './mimew.pl'; (A)の場合
    require './b64mclib.pl'; (B)の場合
    #
          ・
       省略
          ・
    sub sendmail{
    
    	&timeget;
    	$formco = @SNADATE;
    	$formco -= 1;
    	$tomail = "佐藤 <$masmail>";
    
    	&jcode'convert(*subje,'jis'); (B)の場合削除可
            (A)の場合
    	$subje = &mimeencode($subje);
    	&jcode'convert(*tomail,'jis');
    	$tomail = &mimeencode($tomail);
            (B)の場合
    	b64mc::Bace64Encode(\$subject, 'jis', 1);
    	b64mc::Bace64Encode(\$tomail, 'jis', 1);
    
    	&jcode'convert(*title,'jis');
    	&jcode'convert(*TIME,'jis');
    
    赤文字の部分が、追加する記述部分です。

    そしてその下部の方にある「"To: $masmail\n";」となっている箇所を「"To: $tomail\n";」として終わりです。(2箇所あります。)



  2. ファイルデーター消滅回避の強化

    当方配布のCGIもロックファイルを利用した、データー消滅回避処理をしていますがサーバーによってロックファイルが使えない等色々な原因で消滅が多発する場合もあると思います。

    下記方法等、色々と回避方法を見直すのも良いかと思います。

    EasyBBS [E]での例1

    -------------- ディフォルト -------------
    sub filedisp {
    
    	if (!open(FILE,">$bbsdate")) { &unlock;&massehtml($no = 0); }
    	eval 'flock(FILE,2);';
    	print FILE @BDATE;
    	eval 'flock(FILE,8);';
    	close(FILE);
    }
    
    --------------  編集後  -----------------
    sub filedisp {
    
    	$temp = $bbsdate . "_tmp";
    
    	if (!open(FILE,">$temp")) { &unlock;&massehtml($no = 0); }
    	eval 'flock(FILE,2);';
    	print FILE @BDATE;
    	#eval 'flock(FILE,8);';
    	close(FILE);
    
    	if($#BDATE >= 0){ rename($temp,$bbsdate); }
    
    }
    
    上記の例は、投稿書き込みの際、一度テンポラリファイルを作りそこにデーターを書き込みます。

    そのテンポラリファイルでのデーターが消滅されていない事を確認($#BDATE >= 0)し、通常のファイル名にリネームするといった処理です。

    #eval 'flock(FILE,8);';のロック専用関数によるファイルロック解除のコメントアウトは、close(FILE);において自動的に解除されますので古いバージョンのperlでは特にコメントアウトした方が良いでしょう。

    symlink及びopenによるファイルロック(2重ロック)は、サブルーチン「filedisp」の前でも処理していますがまだ色々と良い方法(truncate、seek等を用いたりとか)があると思いますので色々と考えてみましょう。但し、100%のと言う処理は不可能ですので大切なデーターのバックアップは不可欠です。



  3. シグナルを用いた処理例

    • 良くファイルロックが残ってしまうと言う方は以下の方法等を試してみるのも良いでしょう。

      $SIG{INT} = $SIG{HUP} = $SIG{QUIT} =  $SIG{PIPE} = 
      		$SIG{TERM} = $SIG{KILL} = "unlock";
      
      sub unlock {
      	if (-e $lockfile) { unlink($lockfile); }
      }
      
    • アラームシグナルを利用する場合。

      $SIG{'ALRM'} = "timeout";
      
      alarm(5);
      
      処理文
      
      alarm(0);
      
      sub timeout {
      	print "Content-type: text/plain\n\n";
      	print "タイムアウトになりました。\n"
      	exit;
      }
      


  4. おまけ? カレンダーをポップアップメモに

    • 当サイト配布 [ Mini Diary ] を使います。
      当ホームページの左下にあるカレンダーのように、下線の付いた日付にマウスをあてると ステータスバー及びポップアップでその日のメモが表示されます。

      カスタマイズ : calender.pl 214行目〜
      open(LOG, "<$url"); while (){ $_ =~ ... 省略 ...
      #$link = '<a class=Ca href="javascript ... 省略 ...
      #		'\',\'' . $log . '\')">'  ... 省略 ...
      $link = '<u><font onmouseover="window.status=\'' . $log . 
      	'\';return true;" style="cursor:pointer;" title="' . 
      		$log . '">' . $lname . '</font></u>' . "\n";
      
      現在のコメントデータがある場合の処理部分をコメントアウトし赤文字の部分を追加し入れ替えをします。( # はコメントアウト )

      title = ポップアップ表示、window.status = ステータスバー表示となります。

       style="cursor:pointer;" はポインターを矢印から指にする為の記述です。


Topへ
シグナル ≫        
    カスタマイズの項「シグナルを用いた処理」に関連し、シグナルについて少々....

  1. シグナル一覧を参照する

    telnet 又は プロンプト等で、killコマンドを参照します。
    $ kill -l
    HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG S TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH INFO USR1 USR2


  2. シグナルとシグナルナンバー

    SIGHUP1ハングアップSIGSTOP17中断
    SIGINT2割り込みSIGTSTP18
    SIGQUIT3終了SIGCONT19SIGSTOPを再開
    SIGILL4SIGCHLD20
    SIGTRAP5SIGTTIN21
    SIGABRT6SIGTTOU22
    SIGEMT7SIGIO23
    SIGFPE8SIGXCPU24
    SIGKILL9強制終了SIGXFSZ25
    SIGBUS10SIGVTALRM26
    SIGSEGV11SIGPROF27
    SIGSYS12SIGWINCH28
    SIGPIPE13無プロセスパイプSIGLOST29
    SIGALRM14アラームSIGUSR130ユーザー定義1
    SIGTERM15終了SIGUSR231ユーザー定義2
    SIGURG16  

Topへ
その他 ≫        
  1. その他について 現在未投稿


 楽天売れ筋プログラミング入門書 etc ...






【 広告 】
賃貸ネオン  姫ハウスランド 
広告


広告募集中
広告欄

【PR1】堺の税理士事務所・堺市
【PR2】堺で会社設立・堺市
【PR3】探偵 東京
【PR4】浮気調査 料金
【PR5】広告欄
【PR6】広告欄
【PR7】広告欄
【PR8】広告欄
【PR9】広告欄
【PR10】広告欄
【PR11】広告欄
【PR12】興信所東京
広告募集中




 

 

 

 


| HOME | SERVICES > レンタル - プログラム - フリー素材 | HOW TO | LINKS | USERS |
- Porfile - What's New - Information - Contact - PMCJ BBS - .特定商取引法に基づく表示 - 個人情報保護ポリシー - ※ SiteMap
Copyright (C) 1998-2010 Sato IT Studio PMCJ by Tomio Sato. All Rights Reserved.