LINEで送る
Pocket

Adachinですっ。

プログラミングってできると面白いんですよね。
いろんな先輩に
「コードの内容が理解できているなら、あとは慣れだよ。」
慣れ!!!
私のサイトに「BBS」というものがあるんですが、(新卒時代に)
簡単に作ってみたので
こちらのソースを紹介していこうと思います。

イメージ

  • データベースの作成
  • PHPで2つのプログラムを書く
  • リダイレクトする

Mysqlにデータベース/テーブルの作成

no には登録番号、name には投稿者の名前、message には投稿メッセージ、
created には投稿日時をそれぞれ格納するものとしました。
AUTO_INCREMENT PRIMARY KEY は勝手に連番を作成してくれるようになります。

テーブルにデータを登録する場合(SQL文)

Mysqlが文字化けしたら

MySQLを再起動


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>

view raw
bbs.php
hosted with ❤ by GitHub

<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>

view raw
resist.php
hosted with ❤ by GitHub

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

LINEで送る
Pocket

カテゴリー: BlogPHP

adachin

1989年生まれのLancers SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、AnsibleやTerraformでのインフラコード化を推進。副業では数社サーバー保守、未経験によるエンジニアのメンターなども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、グループ会社インフラ対応、ECS/Fargateへの移行、Wordpressによるコーポレートサイトの修正、メンター、分析基盤の運用を担当している。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください