PHPで簡単な単語帳を作ってみましょう。
これを応用すると色々なプログラムが書けるはずです!
今日は、 データベースに接続→単語を登録
という作業をやってみます。

まず、MySQLで以下のSQL文を実行します。
-------------------------------------------
CREATE DATABASE `english`;
CREATE TABLE `tango` (
`id` INT NOT NULL AUTO_INCREMENT ,
`tango` VARCHAR(40) NOT NULL ,
`imi` TEXT NOT NULL ,
PRIMARY KEY (`id`)
);

-------------------------------------------
これでenglishというデータベースの中に
tangoという表が作成されます。

次に単語投稿フォーム<touroku.html>を作ります。
エディタでtouroku.htmlを作ってください。
-- touroku.html ---------------------------
<html>
<body>
<form action="touroku.php" method="post">
単語:<input type="text" name="tango"><br>
意味:<input type="text" name="imi"><br>
<input type="submit" value="送信">
</form>
</body></html>

-------------------------------------------

あとはPHPスクリプト<touroku.php>をエディタで作成してください。
-- touroku.php ----------------------------
<?php
$host = "localhost"; // データベースホスト名
$user = "user"; // ユーザー名
$pass = "pass"; // パスワード
$dbname = "english"; // データベース名
$dbtable = "tango"; // データベーステーブル名

if(!$_POST['tango'] || !$_POST['imi']){exit("入力されていない項目があります");}
$db = @mysql_connect($host,$user,$pass) or die("Could not connect MySQL server");
// データベースサーバーに接続
@mysql_select_db($dbname) or die("Could not use selected database");
// データベースを選択
$sql = "INSERT INTO `${dbtable}` SET tango = '${_POST['tango']}', imi = '${_POST['imi']}';";
// SQL文を生成
$result = @mysql_query($sql) or die("Could not query of [ $sql ]");
// クエリーを送信
echo "単語 ${_POST['tango']} を登録しました";
?>
--------------------------------------------

あとは投稿フォームから単語を登録するだけです。
必要最低限の機能しかありませんので、簡単でしたね?
次回はデータベースから単語を取り出して表示させてみましょう。
ページにアクセス制限をつけてみましょう。
上部に以下のようなプログラムを挿入します。

<?php
$denylist = array("proxy.com","xyz.com","kkk.net")
// アクセスを拒否するホストのリスト
$host = @gethostbyaddr($_SERVER['REMOTE_ADDR']);
foreach($denylist as $value){
if(ereg($value,$host)) // パターンにマッチすれば
exit("アクセスが拒否されました");
}
?>

正規表現関数ereg()を使いました。
ereg(pattern,string) のように使います。
eregi()を使うと大文字と小文字を区別しません。

ただし、パターンマッチングにはPerl互換のpreg_match()の方が早く動作するようです。
なるべくならそちらを使う方がよいでしょう。
掲示板でのトリップ機能については先日書きましたが、
今日は実際にトリップを実現するためのプログラムを紹介します。
フォームから投稿されたデータ$_POST['name']を
トリップ機能を使いエンコードしてましょう。
Perlの正規表現を利用すると以下のようなプログラムになりますね。

$_POST['name'] = str_replace("◆","◇",$_POST['name']);
// まず◆を使って偽装されないよう◆は◇に変えておきます
if(preg_match("/#(.)+/",$_POST['name'],$regs)){
// もし#任意の文字列にマッチしたら以下を実行
 list($name,$trip) = explode("#",$_POST['name']);
 $trip_enc = substr(md5($trip),0,8);
// md5で暗号化し最初の8文字をトリップにしましょうか
 $_POST['name'] = $name."◆".$trip_enc;
}
大学のページで学外からのアクセスを禁止しているページがありますが、
そういうページは同じ学内の他のサーバーにログインできれば
学外からでもアクセスすることができます。
ポートフォワーディングを使ってアクセスしてみましょう。

まず以下のページからPortForwarderを落とします。
http://www.fuji-climb.org/pf/news.html

うちの大学の成績照会は学外からのアクセスを認めていません。
これを学外からアクセスする例を示します。
jade.st.csce.kyushu-u.ac.jpにログインしてアクセスします。
configファイルを以下のように編集します。

Host my_server
HostName jade.st.csce.kyushu-u.ac.jp
User ユーザー名
LocalForward 443 gkmw2.ofc.kyushu-u.ac.jp:443


これを読み込ませてPortForwarderを立ち上げます。
パスワードを入力して接続完了です。
その後 https://localhost/portal/Top.do に接続すると
学外からgkmw2.ofc.kyushu-u.ac.jpの443ポートが接続可能になります。

ウェブサーバーにアクセスしたいときは
LocalForward 80 接続先:80
のように設定すればよいでしょう。
皆さんトリップ機能というのはご存知でしょうか?
掲示板でなりすましを防ぐための機能で
投稿者名のあとに「#適当な文字列」を入力すると、
投稿者名◆暗号化された文字列」と表示されます。
これにより、他人が管理人などになりすまして
投稿することを防ぐことができます。

皆さんも練習してみましょう。
http://www.freebbs.biz/phpbbs/bbs.php?id=ymty

投稿者名に「管理人#take」と入力して投稿すると
管理人◆600d6af0」と表示されましたね?
これで◆以下が600d6af0以外の人は偽者とわかります。

↓この機能が使える掲示板レンタル
http://www.freebbs.biz/