キーワード:PHP 解除
以前、PHPで掲示板を作っていると書きましたが、とりあえず動くものが完成しましたので
公開したいと思います。

簡易的なレス機能なしの掲示板ですが、以下の機能は実装してみました。

・画像の投稿
・投稿した画像のサムネイル生成
・2ch互換(のはず)のトリップ
・Youtube、ニコニコ動画のURLを書くとプレイヤーを埋め込む
・連続投稿ガード
・スパム対策(プログラム等による書込み防御)
・クッキーによる入力欄情報保持
・投稿者による記事の削除(削除キーを設定した場合)

こんなところですかね?

前回も書いたとおり、記事の書込みは多くの環境でりようできるように
DBではなく通常ファイルとなっています。

ただ、PHPをよくわかってない初心者が試行錯誤しながら作ったスクリプト
なので、非常に突っ込み所満載かと思います。
今回はPHPの勉強ということですが、簡単なjavascriptも使用しています。
ただし、javascriptではフリーのライブラリであるlightboxやshaを使っています。
これはもちろん、私が作ったものじゃありません。
こんなのまだまだ作れやしないですよ・・・w
あと、CSSもググりながら見よう見真似で作ってるので統一感とかさっぱりないです。

ここに公開するのは使用してもらうというより、コードに対してダメ出しをもらうためです。
「セキュリティ的にこの方法はよくない」とか「ここの処理はもっとこう書けばいい」とか、
「そもそも設計自体がおかしい」とかw

まぁ、PHP、javascript、CSSなんかはまだまだよくわかってないので
わかってないからこそ羞恥心なく(あるけどw)公開できるってのもあります。

デザインセンスもないため見た目もひどいもんですが、よかったら使ってみて突っ込んでやってくださいw
動作は以下の仮想環境を作って行っています。
Linux(CentOSバージョンは5.6だったかな?)、Apache2系(バージョン忘れた)、PHP5.3.3
ブラウザはIE、FF、Chromeで確認していますが、何かIEは自分勝手ですね。

ダウンロードはこちら → bbs.zip

※2015/09/18 不具合があったので修正しました。

テストした際の掲示板のイメージを貼って起きます(スクリーンショットです)
特にスマホも意識してないので見え方はPCもスマホも同じような物です。
なので、スマホでは見難いかもしれません。
bbs-ss

もっとマシなデザインはできなかったのでしょうかw
プログラミング中というより勉強中ですがw

PHPは何年か前、4.3.xぐらいがよく使われていた時に少し勉強して
Webサイトを作った事がありますが、PHP4ではクラスは作れるものの、
オブジェクト指向としては、物凄く中途半端な感じでした(・・・はず。)
(もっと中途半端なのは私の知識の方なんですがwww)

そこで、PHP5からオブジェクト指向がマトモになったというのを以前から
耳にしていたのですが、Webサイトを作るという事自体がほとんどなかったので
そのまま空気でした。
しかし、最近はWeb系に興味が出てきたのでぼちぼち勉強を始めました。
PHP5.3.3ってのも新しくはないですが、とりあえず勉強するには十分です。

PHP5系自体は初めてですが、PHP4の僅かな記憶を頼りに関数リファレンスや
PHP5の新機能を一からググりながら画像貼り付け可能な掲示板を作っています。

せっかくオブジェクト指向がマトモになった(?)という事なので、クラスを作っています。
・・・が、色々とバグに躓いてます。

PHPは比較的手軽にインタラクティブなWebサイトを作れますが奥が深すぎます・・・
また、コンパイルも必要なく、プログラミング言語としては簡単な部類になるのですが、
それ故に、デバッグが結構大変です。(変数名タイプミスしてても動くんだもん・・・)
javascriptやHTMLも同じですが、
使いこなすにはかなりの経験を積まないといけないでしょうね。

わからない事だらけで調べながら作っている感じなので非常に捗りませんw

今作っている画像掲示板は出来上がったらここでスクリプトを公開したいと思います。
(PHP勉強しながらの奴が書いたコードなんで突っ込み所は満載でしょうけどw)

DBは使用せず、通常ファイルへ記事を書き込むシンプルなものです。
(本当はDB使った方がデータの操作が楽なんですが、多くの環境で使えるように)

とりあえず、なりすまし防止用に2ちゃんねる互換(の予定)のトリップ機能を実装予定です。

今現在の完成度は、、、そうですね・・・20%といったところでしょうかw
今後はWebプログラミングも勉強しようと前から書いてましたが
ようやくその勉強用の仮想環境構築がひととおり終わりました。
物忘れが酷いので記録しながらの設定で結構時間かかりましたw

自宅に設置してるサーバーはもうだいぶバージョンも古いので
新しいバージョンをテスト用に構築しようと思って構築しました。

新しいと言っても、何年か前のバージョンなのでこちらも十分古いんですけどねw
あと、自宅サーバーにしている方はデータベースにPostgreSQLを使ってるんですが、
何か色々と見ていたらMySQL使ってる所が多いみたいなので
今回はMySQLを設定しました。

linux-vm01

これでとりあえず、PHPやらCGIのテストができます。
Javascriptはクライアント側だけで一応テストはできますが、
PHPやCGIなんかのサーバーサイドのプログラムはサーバーが必要になります。

本番のサーバーでテストもなしにいきなりプログラムを動かして
バグとか不具合でサーバーに負荷かけたら目つけられそうですからねw
テストはしっかりやらないといけないです。

まだ設定したばっかりなので設定がおかしくて動かない場合は微調整が必要ですが。。。

とりあえずここまで。

RedHat系のLinuxばっかり使ってますが、FreeBSDとかも今度環境作っていけたらと思います。
CGIって聞いたことありますかね?
最近ではこの仕組みを使わずにWebサーバーのモジュールとして実行する方式が
流行ってますよね?たぶん。
Webプログラマーなら知らないと始まらないPHPなんかがそうですね。
(PHPをCGIとして動作させている風変わりな珍しいサーバーも中にはあるようですが)

さて、このCGIですがCommon Gateway Interfaceのそれぞれの頭文字を取っています。
いやだから頭文字の意味を解説したから何?と、毎回思いますがお決まりなので・・・

ざっくりとCGIについて説明すると
Webサーバーから外部のプログラムを実行して結果を受け取る仕組みです。

ざっくり過ぎてわからん!
例えば"Amakusa"と出力するだけのプログラムがあったとします。
このプログラムを起動すると「Amakusa」と表示されますが
Webサーバー側で起動すると「Amakusa」という出力結果をWebサーバーが受け取り
その結果をブラウザに返します。
ブラウザでは何と表示されるでしょう?

500 Internal Server Error

おい。

なぜエラーになるのかというと、HTTPのヘッダーを出力してないからです。
なのでこのように出力するプログラムを書くといいはずです。
Content-type: text/html

Amakusa
1行空いてますね、これは決まりごとです。
これでブラウザに「Amakusa」と表示されます。

さて、Webサーバーにこのプログラムを実行して!と命令するにはどうすればいいんでしょうか?
簡単です。そのプログラムのURLにブラウザでアクセスするだけです。
http://abcdefg.aaa.jp/xxxx.cgi
のような感じで、この例だとxxxx.cgiがプログラムになります。
CGIの場合は拡張子が主に「cgi」となっている場合が多いです。

このCGIですが、標準入出力ができるプログラミング言語なら何でも作れます。
テキスト処理が多いCGIプログラムではテキスト処理に優れたPerlというスクリプト言語が
多く使われてますが、C言語でもC++でもPHPでも、Linuxなんかのシェルスクリプトでも可能です。

標準入出力について長くなりそうなのでここでは説明しませんw

早い話、CGIプログラムは実行結果をHTTPヘッダーとHTMLで出力してそれを
Webサーバーを経由してブラウザに表示させているだけなんです。

では、CGIでない場合はどうでしょうか?
Webサーバーのモジュールとして実行されるので新しいプロセスを作る必要がないので
起動が早いです。
PHPがこの方式が多いのでPHPの方がPerlより速い!と言ってる人もいますが、
PHPが速いんじゃなくて、動作方式の違いによる差です。
PHPもPerlと同じCGIモードで動かす(またはmod_perlを使うか)と、
たいした速度差なんてないんじゃないの?と思います。

一昔前はCGIと言えばPerlというぐらいPerlがメジャーになってましたが、
今ではPHPの勢いが強そうですね。

私もPerlとPHPを使ってちょっとしたサイトを作った事がありますが、PHPはかなり楽です。
そもそも、Perlと違いWeb用に作られているから当然なんでしょうけど・・・
また、プログラミングの中でも難易度がそんなに高くなく、ホームページが作れるようになって来た
という人も結構とっつきやすいのではないでしょうか。

PerlなんかでCGIプログラムを作成する場合はフォームデータのエンコードやデコードについても
勉強が必要になってきます。(CGI用のモジュールがあるので楽なんですかね?)

なのでWeb技術でサーバーサイドのプログラムを組みたい場合はPHPを勉強するのがオススメです。

本業がプログラマーでない、Web技術素人の日曜プログラマーがエラソーな事書きましたが、
盛大な間違いがあるかもしれませんので気をつけてくださいねw
[ 1 ]      4件中 1-4件