Linux自宅サーバー構築記。PHP4掲示板作成。

WEBプログラミングの世界へようこそ !!
HP制作の入門&手引き


   メニュー
フォーム POST取得
PostgreSQL接続 CSVレコード追加
CSVレコード出力 CSVレコード削除
ページング クッキー
セッション リロード対策

   リンク
PHP入門&TIPS
   phpspot

PHP総合
   PHPの小部屋

質問掲示板
   phppro

用語集
   phppro

   メニュー
apache1.3.xのインストール apache1.3.xの設定
apache1.3.xバーチャルホスト PostgreSQL7.4.xのインストール
PostgreSQL7.4.xの設定 PHP4.3.xのインストール
PHP4.3.xの設定ファイル apache1.3.x, PostgreSQL7.4.x, PHP4稼動確認
Samba telnet
proftpd ntpd
MySQL3.23.xのインストール BIND
postfix  
 TOP  <<CGI/Perlホーム
CGI/Perlホーム


フォーム

  フォーム全種類。 (PHP4, CGI/Perl同様。)

POST取得

  フォームデータからPOSTで値を取得。

CSVレコード追加

  PerlからCSVファイルへレコード追加。(書き込み)

CSVレコード出力

  PerlからCSVファイルの出力。(閲覧・表示)

クッキー

  Perlによるクッキー。

 


■■資料まとめ
■POST取得
■CSVファイル
■クッキー
■配列
■ハッシュ
■サブルーチン
■文字列操作
■正規表現
■ライブラリ
■モジュール
■パッケージ
■ヒアドキュメント
■文字コード
■クエリ文字列
■エンコード/デコード
■sendmail

■PostgreSQL実装

■POST取得

(1). POST判断
POST判断後、$queryにクエリ文字列を読み込む。

if($ENV{'REQUEST_METHOD'} eq 'POST'){
read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
}

(2).フォームデータを復元。

foreach $pair (split(/&/, $query)){
($key, $value) = split(/=/, $pair);

この間に、文字のデコード, 特殊文字のHTMLエントリー, 文字列の処理

}
(3).文字のデコード

$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg;
(4).特殊文字のHTMLエントリー

$value =~ s/</&lt;/g;
$value =~ s/>/&gt;/g;
$value =~ s/\n//g;
# ,(カンマ)を.(ドット)に変換
$value =~ s/\,/./g;

(6).最終的にハッシュに代入。

$FORM{$key} = $value;

(7).出力 - フォーム変数をキーとするハッシュから行う。
$FORM{"name_sei_text"}

HTML内に変数名で出力可能。
=======================================================================
■CSVファイル
●ファイル操作
○読み込みモードオープン … open ファイルハンドル, "ファイルパス";
○ファイルクローズ … close ファイルハンドル;

例). open(IN, "log.data");
@file = <IN>; // 配列に読み込む。
close(IN);
通常の読み込みモードでのファイルオープンは、open(IN, "< log.data");

○ファイルオープンモード
読み込みモード: open(FH, "< log.data");
上書きモード: open(FH, "> log.data");
追加書き込みモード: open(FH, ">> log.data");
読み込み書き込み両用オープン open(FH, "+> log.data");

○ファイルへの書き込み。
print ファイルハンドル データ;

●CSVファイルに追加書き込みモードで処理。
POSTで取得したデータを、CSVファイルに書き込む為に、「,」カンマで、データを区切り
1文字列にする。
→構文:
$strings1 = join("デリミタ", 配列 or リスト);
=======================================================================
■サブルーチン
●(関数)サブルーチン
sub サブルーチン名(仮引数, 仮引数, 仮引数,…){
処理;
}
●サブルーチン呼び出し
&サブルーチン名(引数, 引数, 引数, …);
●サブルーチン内の変数
→サブルーチン内でのみ、使用する変数(有効範囲:サブルーチン内のみ。)
my $example = 'testing....です。';
●仮引数がない場合のデータの取得。
@_
例). ($x, $strings) = @_;
=======================================================================
■ライブラリ
●ライブラリ使用。
○構文:
require 'ライブラリパス名';
●ライブラリとは
多用するサブルーチンを別ファイルにして保存する。
requireで呼び出し使用することが可能。
サブルーチンをライブラリにするには、そのサブルーチンファイルを
ファイルに保存して、最終行に、1;を付加する。
→ requireに呼び込み成功の1を与えるもの。

=======================================================================
■モジュール
●モジュールの使用
use モジュール名;

●標準モジュール(標準でインストされているモジュール)
○エラー表示モジュール
use CGI::Carp qw(fatalsToBrowser);

○CGI.pmモジュール
use CGI;
# オブジェクト生成
$q = new CGI;
※データの取得
フォームのname属性の値が、namaeの場合。
$Name = $q->param('name');
→フォームの形式(テキストボックス, オプションボタン,テキストエリア, セレクトボックス)
取得可能。
→複数選択可能な、チェックボックスは、受け取り側で配列指定。
@checkbox_mz_data = $q->param(checkbox_magazine1);
→CGI.pmの詳細は、参考サイト
http://www.futomi.com/lecture/form/cgi-pm.html

●CPANモジュール(インストして使用するモジュール)
→クラスライブラリ
=======================================================================
■パッケージ
●パッケージとは
オリジナル関数(サブルーチン)を、別ファイルにして保存して、
CGI/Perlから別ファイルのサブルーチンを呼び出し、その関数(サブルーチン)
や、変数(スカラ)や配列、ハッシュを使用する。
●パッケージの作成。
・別ファイルにする関数。(ファイル)。
・ファイルの拡張子は、「pl」
・パッケージにする関数(サブルーチン)には、関数の前に、パッケージを宣言
する。
→ package パッケージ名;
・また1ファイルに、パッケージを1つではなく、複数作成することも可能。
・パッケージ宣言された関数の、変数スコープは、package宣言から、次の
パッケージ宣言までとなる。
・ファイルの末尾に、return 1;または、1;を記述。これは、呼び出し側に
真を与える為に行う。
・例).
package pkg1;

sub func(){
print "OK!\n";

}
package pkg2;

sub func2(){
print 'OK2!!!'. "<br>\n";
}
return 1;
●パッケージの呼び出し。
require 'パッケージファイル名';

●パッケージ関数の使用。
&パッケージファイル名::パッケージファイル内関数名;

=======================================================================
■ヒアドキュメント
●構文
print <<EOD;

EOD
=======================================================================
■クエリ文字列取得
●GETで取得(環境変数から)

if($ENV{'REQUEST_METHOD'} eq 'POST'){

read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
}
elsif($ENV{'REQUEST_METHOD'} eq 'GET'){
$query = $ENV{'QUERY_STRING'};
}
以下データ取得は、POST同等。

=======================================================================
■エンコード/デコード
●エンコード
$str =~ s/([^\w ])/'%' . unpack('H2', $1)/eg;
$str =~ tr/ /+/;
●デコード
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg;
=======================================================================
■sendmail(メール送信)

$from = 'healtree@xxx.xxx';
$to = 'healtree_sp@xxx.xxx';

open(MAIL,"| /usr/sbin/sendmail -t");
print MAIL <<"EOL";
From: $from
To: $to
subject: aa
Content-type: text/plain

sendmail test running.....
EOL
close (MAIL);
print 'メール送信完了:'. "<br>\n";

※件名及び、差し出し人($from)に、日本語文字列(2バイト)を含む場合は、 MIME BASE64に文字コードを変換する必要がある。
→ mimeencodeを行う。
※また本文は、メール送信形式により、JISコード(文字コード)に変換して送信する。

PHP4 - CSVファイル掲示板
PHP4 - MySQL掲示板
Copyright (C) 2007-2008 projectz All Rights Reserved.  Page Top▲