(6) 簡単な掲示板を作ってみる
最初に、下記のようなテーブル「tbk」をデータベース「db1」に作っておく。
カラム名 |
num |
name |
mess |
定義 |
INT |
VARCHAR(100) |
VARCHAR(100) |
AUTO_INCREMENT |
PRIMARY KEY |
カラムの用途 |
メッセージの連続番号 |
書き込み者の氏名 |
メッセージ |
●掲示板のファイル構造
└|xampp|
└|htdocs|
- easy_select.php … レコードを表示
- easy_insert.php … レコードを挿入
- easy_delete.php … レコードを削除
- easy_search.php … レコードを検索
- easy.html … 上のスクリプト4つを実行
●トップページを作る
easy.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Language" content="ja">
<title>
easy.html
</title>
</head>
<body bgcolor='skyblue'>
<!-- /* 表示機能を呼び出す */ -->
<form method="post" action="easy_select.php">
メッセージを表示します<br>
<input type="submit" value="メッセージ表示">
</form>
<!-- /* 挿入機能を呼び出す */ -->
<form method="post" action="easy_insert.php">
名前を入力して<input type="text" name="a1"><br>
メッセージ入力して<input type="text" name="a2" size=150><br>
<input type="submit" value="メッセージ送信">
</form>
<!-- /* 削除機能を呼び出す */ -->
<form method="post" action="easy_delete.php">
削除する番号を入力して<input type="text" name="b1"><br>
<input type="submit" value="削除番号送信">
</form>
<!-- /* 検索機能を呼び出す */ -->
<form method="post" action="easy_search.php">
検索のキーワードを入力して<input type="text" name="c1"><br>
<input type="submit" value="検索">
</form>
</form>
</body>
</html>
各phpファイルの共通部分
<?php
$s=mysql_connect("localhost", "root", "1234") or die("接続失敗です");
print "接続成功しました<br>";
mysql_select_db("db1");
/* 各ファイル異なる記述 */
mysql_close($s);
print "<br><a href='easy.html'>トップメニューに戻ります</a>";
?>
easy_select.php
$re=mysql_query("select * from tbk order by num");
while($kekka=mysql_fetch_array($re)){
print $kekka[0];
print ":";
print $kekka[1];
print ":";
print $kekka[2];
print "<br>";
}
easy_insert.php
$a1_d=$_POST["a1"];
$a2_d=$_POST["a2"];
mysql_query("insert into tbk (name,mess) values('$a1_d','$a2_d')");
$re=mysql_query("select * from tbk order by num");
while($kekka=mysql_fetch_array($re)){
print $kekka[0];
print ":";
print $kekka[1];
print ":";
print $kekka[2];
print "<br>";
}
easy_delete.php
$b1_d=$_POST["b1"];
mysql_query("delete from tbk where num=$b1_d");
$re=mysql_query("select * from tbk order by num");
while($kekka=mysql_fetch_array($re)){
print $kekka[0];
print ":";
print $kekka[1];
print ":";
print $kekka[2];
print "<br>";
}
easy_search.php
$c1_d=$_POST["c1"];
$re=mysql_query("select * from tbk where mess like '%$c1_d%'");
while($kekka=mysql_fetch_array($re)){
print $kekka[0];
print ":";
print $kekka[1];
print ":";
print $kekka[2];
print "<br>";
}
セキュリティを強化する
●パスワードの記載について
パスワードをPHPファイルに書いておくとセキュリティに問題があるので、
db_info.php というファイルを下記の内容で作成し、dataというフォルダの中に保存。
<?php
$serv="localhost";
$user="root";
$pass="1234";
$dbnm="db1";
?>
次に、各PHPファイルに記載した下記の文を書き換える。
$s=mysql_connect("localhost", "root", "1234") or die("失敗です");
↓
require_once("data/db_info.php");
$s=mysql_connect($serv, $user, $pass) or die("失敗です");
mysql_select_db("db1");
↓
mysql_select_db($dbnm);
●パスワードの記載について
クエリに不正なデータを入れられないようにする。
削除番号を入力するところで数字以外の入力をのかす。
$b1_d=$_POST["b1"];
if(preg_match("/[^0-9]/", $b1_d)){
print "<font color='red'>数字以外は入力しないでください。</font><br>";
}else{
mysql_query("delete from tbk where num=$b1_d");
}
●¥マークの挿入
不正な値の入力を防ぐために、
php.iniの中の「magic_quotes_gpc」をONにしておく。
●HTMLタグを無効にする
タグなどの特殊文字を別の文字列に変換する「htmlspecialchars(文字列)」を使う。
$a1_d=$_POST["a1"];
$a2_d=$_POST["a2"];
↓
$a1_d=htmlspecialchars($_POST["a1"]);
$a2_d=htmlspecialchars($_POST["a2"]);
※ XAMPP 1.7.7 [PHP: 5.3.8] での設定項目です。
最終更新:2012年02月02日 17:28