PGサンプル 10日でおぼえるシリーズ

Lesson24 実習3


named.conf

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {

listen-on port 53 {
any;
};

directory "/var/named";
dump-file "/var/named/data/cache_dump.db";

statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursion yes;

dnssec-enable yes;
dnssec-validation yes;

dnssec-lookaside auto;

forwarders {
192.168.5.1;
};
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";

};

logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};

};

zone "." IN { type hint; file "named.ca";
};

zone "example.org" { type master; file "example.org.zone";

};

zone "5.168.192.in-addr.arpa" IN {
type master;
file "example.org.rev";
};

include "/etc/named.rfc1912.zones";


example.org.zone


$ORIGIN example.org.
$TTL 1D

@ SOA dns.example.org. root.example.org. (
2012100502 ;serial

10800 ;refresh
3600 ;retry
604800 ;expire
86400 ) ; minimum(negative cache)

IN NS dns.example.org.

IN A 192.168.5.75

IN MX 5 mx.example.org.
dns IN A 192.168.5.75
www IN A 192.168.5.75
mx IN A 192.168.5.75


example.org.rev


$ORIGIN 5.168.192.in-addr.arpa.
$TTL 1D

@ IN SOA dns.example.org. root.example.org. (
2012101302 ; serial
3600 ; refresh 1Hour
900 ; retry 15min
604800 ; expiry 1w
3600 ; minimum 24Hour

);

IN NS dns.example.org.
IN A 192.168.5.75

75 IN PTR www.example.org.

Lesson33 実習5


post.php

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8" />
<title>メール送信</title>
</head>

<body>

<?php

require_once "Mail.php";
//日本語文字コードをUTF-8で処理
mb_language("japanese");
mb_internal_encoding("utf-8");

//confirm.phpから受け取った送信内容を変数へセット
$button = $_POST['SendMail'];
if ($button != ""){
$mail_address = $_POST['Address'];
$mail_subject = $_POST['Subject'];
$mail_body = $_POST['MailBody'];

//SMTPサーバへ接続するためのアカウント情報
$params = array(
"host" => "example.org", //SMTPサーバ名
"port" => 587, //送信ポート25 or 587が一般的

"auth" => "PLAIN", //認証の方式、他に暗号化など色々ある
"username" => "ichinohe", //送信者名
"password" => "xxxxxxxx" //パスワード

);

//SMTPサーバへ接続
$mailObject = Mail::factory("smtp", $params);
$recipients = "ichinohe@netmars.mobi";
//FROMヘッダをISO-2022JPコードへ変換。ヘッダ情報にかんしては本文のコードとは別に考えISO-2022JPへ

//コード変換しMIMEエンコードするのが常識。そうしないと日本語が文字化けになる。
$fromstr = mb_encode_mimeheader(mb_convert_encoding($_POST['Sendar'],
"ISO-2022-JP","auto"))." < $mail_address > ";
//メッセージ本文へ表示されるヘッダ情報

$header = array(
"To" => "ichinohe@netmars.mobi",
"From" => $fromstr,

"Subject" => $mail_subject
);
//メッセージを送信
$ret=$mailObject -> send($recipients, $header, $mail_body);

//送信のエラー処理
if(PEAR::isError($ret)) {
die("送信失敗:".$ret->getMessage());
echo('もう失敗');
}

else{
echo('送信しました');
}
}

?>

<a href="index.php">TOP</a>

</body>
</html>

Lesson33 実習3


confirm.php

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8" />
<title>メール送信フォームの確認</title>
</head>

<body>
<!-- index.phpから受け取ったデータを変数へ格納 -->
<?php
$button = $_POST['exec_submit'];
if ($button != ""){
$sender_name = $_POST['user_name']; //送信者の名前
$mail_address = $_POST['user_email']; //送信者メールアドレス

$mail_subject = $_POST['user_subject']; //件名
$mail_body = $_POST['user_body']; //メール本文
}
?>
<!-- 確認内容が正しければの表示とpost.phpへ送信情報を渡して管理者へ送信 -->
<form method="post" action="post.php">

<div id="confirm">
<strong>この内容でよろしいですか?</strong><br />
お名前: <?php echo $sender_name; ?><br/>
メール: <?php echo $mail_address; ?><br/>

件名: <?php echo $mail_subject; ?><br/>
本文: <?php echo $mail_body; ?><br/>
</div>

<?php
// hidden属性で送信者情報を画面に表示せず、且つソースに表示しないようにPHPで記述。

echo "<input type=\"hidden\" name=\"Sendar\" value=\"$sender_name\">";
echo "<input type=\"hidden\" name=\"Address\" value=\"$mail_address\">";

echo "<input type=\"hidden\" name=\"Subject\" value=\"$mail_subject\">";
echo "<input type=\"hidden\" name=\"MailBody\" value=\"$mail_body\">";

?>

<!-- 送信ボタンでpost.phpへデータを送信 -->
<input type="submit" name="SendMail" value="送信"/>
</form>

</body>
</html>

Lesson33 実習2


<!DOCTYPE HTML>

<html>
<head>
<meta charset="UTF-8">
<title>メール送信フォームのテスト</title>
</head>

<body>

<!-- フォーム送信設定POST版 入力内容を確認ファイルconfirm.phpへ送信 -->

<form method="post" action="confirm.php">
<!-- 以下のインプットタグで定義された項目をconfirm.phpへ送信 -->
<!-- メール送信情報。 nameに設定された変数でconfirm.phpへ渡される. -->
<!-- 入力値はvalueにセットされる -->
お名前: <input type="text" name="user_name" size=40 /><br/>

メール: <input type="text" name="user_email" size=40 /><br/>
件名: <input type="text" name="user_subject" size=60 /><br/>

本文: <textarea cols=60 rows=10 name="user_body"></textarea><br/>
<!-- 送信ボタンでconfirm.phpへ送信 -->
<input type="submit" name="exec_submit" value="確認"/>

<!-- キャンセルボタンで入力値がクリア -->
<input type="reset" name="exec_submit" value="クリア"/>
</form>

</body>

</html>

Lesson32 実習3


session.html

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8" />
<title>セッションのテスト</title>
</head>

<body>
<h3>セッションにデータをいれました</h3>

<!-- フォーム送信 -->
<form name="my_form" method="POST" action="./confirm.php">

<!-- 住所入力テスト。 nameに設定された変数でconfirm.phpへ渡される. -->
<!-- 入力値はvalueにセットされる -->
都道府県:<input type="text" name="pref" value=""><br />
市・区:<input type="text" name="city" value=""><br />

町名:<input type="text" name="street" value=""><br />
<!-- 送信ボタンでconfirm.phpへ送信 -->
<input type="submit" value="送信" />

</form>

</body>
</html>


confirm.php


<?php

session_start();

echo "<pre>";

print_r($_POST);
echo "</pre>";

print "住所:";
print $_POST['pref'];
print $_POST['city'];
print $_POST['street'];

echo "<h2>このデータは下記リンク先のページでセッション変数で参照されます</h2>";

$_SESSION['pref'] = $_POST['pref'];
$_SESSION['city'] = $_POST['city'];
$_SESSION['street'] = $_POST['street'];

?>
<a href="refer.php">参照ページ</a>

refer.php

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8" />
<title>セッションの読み出し</title>
</head>

<body>
<h3>受け取ったセッションを書き出します</h3>
<?php
session_start();
print "住所:";
print $_SESSION['pref'];

print $_SESSION['city'];
print $_SESSION['street'];
?>
</body>
</html>

Lesson32 実習2

post_test.html

<!DOCTYPE>
<html>
<head>
<meta charset="UTF-8">
<title>POSTでデータ受け渡し</title>
</head>
<body>

<h3>POSTで送信テスト</h3>

<!-- フォーム送信設定POST版 -->
<form name="my_form" method="POST" action="./post_recv.php">
<!-- 住所入力テスト。 nameに設定された変数でpost_rev.phpへ渡される. -->

<!-- 入力値はvalueにセットされる -->
都道府県:<input type="text" name="pref" value=""><br />
市・区:<input type="text" name="city" value=""><br />

町名:<input type="text" name="street" value=""><br />
<!-- 送信ボタンでpost_recv.phpへ送信 -->
<input type="submit" value="送信" />

</form>

</body>
</html>


post_recv.php


<?php

echo "<pre>";

print_r($_POST);
echo "</pre>";

print "住所:";
print $_POST['pref'];
print $_POST['city'];
print $_POST['street'];

?>

Lesson32 実習1


get_test.html

<html>
<head>
<title>GETでデータ受け渡し</title>
</head>
<body>
<h3>GETで送信テスト</h3>

<!-- フォーム送信設定GET版 -->

<form name="my_form" method="GET" action="./get_recv.php">
<!-- 住所入力テスト。 nameに設定された変数でget_rev.phpへ渡される. -->
<!-- 入力値はvalueにセットされる -->
都道府県:<input type="text" name="pref" value=""><br />

市・区:<input type="text" name="city" value=""><br />
町名:<input type="text" name="street" value=""><br />

<!-- 送信ボタンでget_recv.phpへ送信 -->
<input type="submit" value="送信" />

</form>

</body>
</html>

get_recv.php


<?php

echo "<pre>";
print_r($_GET);
echo "</pre>";

print "住所:";

print $_GET['pref'];
print $_GET['city'];
print $_GET['street'];

?>

Lesson31 実習4

function.php

<?php
//デザインテンプレートの繰り返し処理記述{foreach}を処理するPG
function _get_foreach($data,$tpl)
{$if='_get_if'; //記述子{if}判定の置換
foreach ($data as $v)
{extract($v);
//$tplに含まれる{foreach}記述子がPHP記述で置換

eval("@\$html.=<<<DOC\r\n{$tpl}\r\nDOC;\r\n");
}
return $html;
}

//デザインテンプレートの簡単なif文(yes/no)レベルの分岐処理{if}の置換

function _get_if($case,$yes,$no)
{return $case?$yes:$no;
}

//テンプレート読み出しプログラム
function get_template($data,$tpl)
//テンプレートの記述を置換するエントリー以下3行までが記述子。
{$get_template='get_template';

$foreach='_get_foreach';
$if='_get_if';
//$dataに含まれる配列データをシンボル変数に置き換える。テンプレートの該当記述子も置換
extract($data);
//テンプレートを$tpl変数へロード
$tpl=file_get_contents($tpl);

//テンプレートのファイルは記述子がPHP記述で置き換えられたのでそれを実行しHTML出力する
eval("\$html=<<<DOC\r\n{$tpl}\r\nDOC;\r\n");
return $html;
}
?>