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

Pocket

カテゴリー: BlogPHP

adachin

1989年生まれのSRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWS/Azureでのインフラ構築、Docker開発環境の提供、Kubernetes保守、インフラコード化、新技術の検証、リファクタリング、セキュリティ強化などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTAで未経験者にインフラのコーチング/コミュニティの運用を実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

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