Adachinですっ。
プログラミングってできると面白いんですよね。
いろんな先輩に
「コードの内容が理解できているなら、あとは慣れだよ。」
慣れ!!!
私のサイトに「BBS」というものがあるんですが、(新卒時代に)
簡単に作ってみたので
こちらのソースを紹介していこうと思います。
■イメージ
- データベースの作成
- PHPで2つのプログラムを書く
- リダイレクトする
■Mysqlにデータベース/テーブルの作成
1 | # mysql -u root -p #Mysqlログイン |
1 2 | CREATE DATABASE bbs;#bbsというデータベースを作る use bbs; #bbsデータベースに切り替え |
1 2 3 4 5 6 | CREATE TABLE messages( #テーブルの作成 no INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), message TEXT, created DATETIME ); |
no には登録番号、name には投稿者の名前、message には投稿メッセージ、
created には投稿日時をそれぞれ格納するものとしました。
AUTO_INCREMENT PRIMARY KEY は勝手に連番を作成してくれるようになります。
■テーブルにデータを登録する場合(SQL文)
1 | INSERT INTO messages(name, message, created) VALUES('名前', 'メッセージ', '2014-08-10 1:40:00') |
■Mysqlが文字化けしたら
1 | $ vim my.cnf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [client] default-character-set = utf8 [mysqld] skip-character-set-client-handshake default-character-set = utf8 character-set-server = utf8 collation-server = utf8_general_ci init-connect = SET NAMES utf8 [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8 |
■MySQLを再起動
1 | $ sudo /etc/init.d/mysqld restart |
■PHPでメインページを作る(bbs.php)/PHPで投稿ページの作成(resist.php)
<html> | |
<head> | |
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css"> | |
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap-theme.min.css"> | |
<style> | |
/*body{margin:20px;}*/ | |
body { | |
padding-top: 50px; | |
} | |
.starter-template { | |
padding: 40px 15px; | |
text-align: center; | |
} | |
div.wrapper{margin:20px;} | |
div.tweetList p:nth-child(odd) { | |
background:#c6e2e2; | |
} | |
div.tweetArea{ | |
margin-bottom: 10px; | |
border-bottom:3px 0 dotted; | |
} | |
/*div.navi{width:100%;height:50px;background:black;}*/ | |
</style> | |
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> | |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | |
<title>ADACHIN BBS</title> | |
</head> | |
<body> | |
<!– | |
<div class="navi"> | |
<a href="/">TOPページ</a> | |
</div> | |
–> | |
<div class="navbar navbar-inverse navbar-fixed-top" role="navigation"> | |
<div class="container"> | |
<div class="navbar-header"> | |
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> | |
<span class="sr-only"></span> | |
<span class="icon-bar"></span> | |
<span class="icon-bar"></span> | |
<span class="icon-bar"></span> | |
</button> | |
<a class="navbar-brand" href="#">ADACHIN BBS</a> | |
</div> | |
<div class="collapse navbar-collapse"> | |
<ul class="nav navbar-nav"> | |
<li><a href="http://docker.adachin.server-on.net:70/bbs.php">Home</a></li> | |
<li><a href="https://adachin.server-on.net/wordpress/">Blog</a></li> | |
</ul> | |
</div><!–/.nav-collapse –> | |
</div> | |
</div> | |
<div class="wrapper"> | |
<div class="tweetArea"> | |
<form action="regist.php" method="post"> | |
<h5>おなまえ : </h5> | |
<input type="text" class="form-control" name="name" size="30" value="" /> | |
<h5>今なにやってるん : </h5> | |
<textarea class="form-control" name="message" rows="5"></textarea> | |
<br/> | |
<input type="submit" class="btn btn-large btn-block" value="つぶやく" /> | |
<hr> | |
</form> | |
</div> | |
<div class="tweetList"> | |
<?php | |
$con = mysql_connect('xx.xx.xx.xx', 'root', 'pass'); | |
if (!$con) | |
{ | |
exit('データベースに接続できませんでした。'); | |
} | |
$result = mysql_select_db('bbs', $con); | |
if (!$result) | |
{ | |
exit('データベースを選択できませんでした。'); | |
} | |
$result = mysql_query('SET NAMES utf8', $con); | |
if (!$result) | |
{ | |
exit('文字コードを指定できませんでした。'); | |
} | |
$result = mysql_query('SELECT * FROM messages ORDER BY no DESC', $con); | |
while ($data = mysql_fetch_array($result)) | |
{ | |
echo "<p>\n"; | |
echo '<strong>[You.' . $data['no'] . '] ' . htmlspecialchars($data['name'], ENT_QUOTES) . ' ' . $data['created'] . "</strong><br />\n"; | |
echo "<br />\n"; | |
echo nl2br(htmlspecialchars($data['message'], ENT_QUOTES)); | |
echo "</p>\n"; | |
} | |
$con = mysql_close($con); | |
if (!$con) | |
{ | |
exit('データベースとの接続を閉じられませんでした。'); | |
} | |
?> | |
</div> | |
</div> | |
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> | |
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script> | |
</body> | |
</html> |
<html> | |
<head> | |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | |
<title>BBS</title> | |
</head> | |
<body> | |
<?php | |
header("HTTP/1.1 301 Moved Permanently"); | |
header("Location: http://docker.adachin.server-on.net:70/bbs.php"); | |
if ($_REQUEST['name'] == '' or $_POST['message'] == '') | |
{ | |
exit('error'); | |
} | |
$con = mysql_connect('xx.xx.xx.xx', 'root', 'pass'); | |
if (!$con) | |
{ | |
exit('データベースに接続できませんでした。'); | |
} | |
$result = mysql_select_db('bbs', $con); | |
if (!$result) | |
{ | |
exit('データベースを選択できませんでした。'); | |
} | |
$result = mysql_query('SET NAMES utf8', $con); | |
if (!$result) | |
{ | |
exit('文字コードを指定できませんでした。'); | |
} | |
$name = $_REQUEST['name']; | |
$message = $_REQUEST['message']; | |
$created = date('Y-m-d H:i:s'); | |
$result = mysql_query("INSERT INTO messages(name, message, created) VALUES('$name', '$message', '$created')", $con); | |
if (!$result) | |
{ | |
exit('データを登録できませんでした。'); | |
} | |
$con = mysql_close($con); | |
if (!$con) | |
{ | |
exit('データベースとの接続を閉じられませんでした。'); | |
} | |
?> | |
<h3>つぶやきましたん。 </h3> | |
<ul> | |
<li><a href="bbs.php">一覧へ戻る</a></li> | |
</ul> | |
</body> | |
</html> |
https://gist.github.com/RVIRUS0817/4145269a1462aced68ee
■これで完成!
あとはデザインをなんとかしたい
あとで削除機能とか
ログイン画面とか
つぶやきは10個まで表示とか
やってみます!
・参考:
– PHPの絵本
– http://www.phpbook.jp/appli/
– http://pb-times.jp/P_52424fa96c066
– 安全なWebサイトの作り方
※現在はruby railsでリニューアルしてます
https://blog.adachin.me/?p=4140
0件のコメント