前のページ < | > 次のページ

(6) 簡単な掲示板を作ってみる

最初に、下記のようなテーブル「tbk」をデータベース「db1」に作っておく。
カラム名 num name mess
定義 INT VARCHAR(100) VARCHAR(100)
AUTO_INCREMENT
PRIMARY KEY
カラムの用途 メッセージの連続番号 書き込み者の氏名 メッセージ

●掲示板のファイル構造
C:¥
└|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>";
}


●4つのファイルの動作確認
4ファイルをすべて公開用フォルダに保存したら、MySQLとApacheの動作を確認し、
http://localhost/easy.html に接続する。


セキュリティを強化する

●パスワードの記載について
パスワードを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