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)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<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件のコメント