電脳コメンテーター「ヤマダサマノゴユウジン」
2007年11月07日23:39
前回、電脳ブロガー「ラムダ」について考えたわけなのですが、どうも「ラムダ」だけではパンチが弱いと言うか、今ひとつブログが盛り上がらないと言うか、決め手に欠ける気がします。これを補うべくヒントを探していたら、ヒントどころか、ある意味正解?というものを発見しました。

それがこの記事。

コメントを支配するものがブログを支配する『コメント集客術』 − ホームページを作る人のネタ帳

Yamadaさまのご友人のお話なのですが、記事の内容を要約しますと、ブログを運営されているYamadaさまのご友人は、コメント欄にあらしを呼び込み、自作自演で煽ったり叩いたり。そして、ブログをこんがり炎上させることでブログを活性化させていくという、まさに死中に活を見出したブログ運営方法を編み出されています。

彼曰く、
『コメントを支配するものがブログを支配するんだって!』
『記事はコメントを発生させるためのおまけ』

との事です。

なるほど、これは盲点でした。

Yamadaさまのご友人が開発された、まさにある意味究極のブログ運営方法、それを可能にするコメントをなんとか手軽に作成できないものか・・・。
そういうわけで、まだ開発途上にある電脳ブロガー「ラムダ」を後押しするべく、いち早く電脳コメンテーター「ヤマダサマノゴユウジン」を開発しました。

電脳コメンテーター ヤマダサマノゴユウジン
Ver. 0.0001





<使用法>
・まず、レスをする人をラジオボタンで選択します。
・デフォルトでは、「管理人さま」にレスをします。
管理人がいないブログはありませんので、ほぼ100%デフォルトで間違いありません。
続いておすすめなのは、「2」です。ほぼ半数以上の記事で「2」がいると予想されますし、自演でコメントをつける場合も「2」であれば苦になりません。「150」とかだと自演が大変です。また、「1」をあえてスルーすることで、「1」のコメント魂に火をつけるという作用も期待できます。
コメントがたまってくると「通りすがり」が登場します。この際には「通りすがり」を選んでください。自然なコメントの流れを演出できます。
また、わりと稀ですが、事情通の「名前を名乗れない人」のコメントがつくことがあります。これはブログ炎上の起爆剤になる可能性を秘めていますので、そういう際はためらうことなく「名前を名乗れない人」を選んでください。
・レスする人を選択したら、「コメント作成」をクリックします。
・出来上がったコメントをコピーし、自分のブログのコメント欄に貼り付けます。

電脳コメンテーター「ヤマダサマノゴユウジン」は、もちろん「ラムダ」が作成したブログ以外の既存のブログのコメントも作成して頂けますが、絶対に勘違いしないで頂きたいポイントがあります。

これはあくまで自分のブログを盛り上げるために使うもので、よそのブログさまで使用するものではありません。

危険ですので、間違ってもよそのブログさまで使用されないことを、きつく注記させて頂きます。

そういうわけで、電脳コメンテーター「ヤマダサマノゴユウジン」で、素敵なブログライフをお過ごし下さい。


という事で、前置きはこれくらいにして、本題に入ります。

今回、電脳ブロガー「ラムダ」Ver. 0.0001と、電脳コメンテーター「ヤマダサマノゴユウジン」Ver. 0.0001を作ったのですが、これはPHPで作成しています。
どちらのプログラムもほとんど同じ構造で、PHP初心者の私でも理解できましたので、PHP初心者の方やこれから何かPHPでやってみたいという方にも、内容がご理解いただけるかもしれません。

(PHPって何?という方は、PHP初心者によるPHP入門をご覧下さい。)

簡単なプログラムであり、色々なことに応用できる可能性がありますので、作成方法をご説明させて頂きます。

まずは、PHPの内容です。
「ヤマダサマノゴユウジン」の方が簡単ですので、内容を以下に示します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ヤマダサマノゴユウジン</title>
</head>
<body>
<?php
$array1 = array("11","12","13","14","15","16");
$array2 = array("21","22","23","24","25","26","27","28","29");
$array3 = array("31","32","33","34","35","36","37");
$key1 = array_rand($array1);
$key2 = array_rand($array2);
$key3 = array_rand($array3);
$text1 = @$_POST["text1"];
$text2 = escapeshellcmd($text1);
$text3 = htmlspecialchars($text2);
?>
<form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>">
<table>
<tr>
<td><input type="radio" name="text1" value="管理人さま" checked>管理人さま</td>
<td><input type="radio" name="text1" value="通りすがり">通りすがり</td>
<td><input type="radio" name="text1" value="名前を名乗れない人">名前を名乗れない人</td>
<td><input type="radio" name="text1" value="2">2</td>
</tr>
</table>
<input type="submit" value="コメント作成" name="submit">
</form>
<?php
if ($_POST['submit']){
echo "<div style='width:350px;height:150px;border:1px solid #999999;padding:10px;overflow:scroll;line-height:1.2;'>";
echo ">>";
echo "$text3";
echo "<br /><br />";
echo "$array1[$key1]";
echo "から来ました。";
echo "<br />これは、";
echo "$array2[$key2]";
echo "<br />";
echo "$array3[$key3]";
echo "</div>";
}
?>
</body>
</html>


<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
この部分で文字コードをutf-8に指定しておりますので、このプログラムをコピペして保存する場合には、文字コードをutf-8に指定する必要があります。
shift-jisやeuc-jpでもいける可能性もありますが、試してはいません。うまくいかないと文字化けします。

このプログラムは、「配列」を使用している「だけ」のプログラムと言っても過言ではありません。

「配列」とは、アパートの大家になり、部屋番号「0」から始まる部屋に住人を次々とほうりこんでいくようなものです。部屋番号を、「キー」と言います。
$array1というアパートを作るとします。ここに住人、11、12、13、14・・・をほうりこみます。
PHPの命令文は、下記のようになります。住人と住人は半角カンマで区切りって、住人一人一人をダブルクォーテーションでくくります。PHPの命令文は最後にセミコロンをつけます。
$array1 = array("11","12","13","14","15","16");

ヤマダサマノゴユウジンを例にとると、住人として、まずは「〜から来ました」の内容を入れればいいわけです。
11 → はてブ
12 → ランキング とか。

あとはこれを、呼び出して表示すれば良いんですが、アパート「$array1」から住人「12」を呼び出すにはどうしたらいいかが問題です。
これを実現するためには、部屋番号「キー」を指定すれば良いのです。

部屋番号「キー」は、住人の数だけ自動的に割り振られます。ただし、気をつけなければいけないのは最初の部屋番号が「0」(ゼロ)だということです。
アパート$array1の住人は $array1[部屋番号] となります。
そして、これを表示するためには、下記のような命令文を書きます。
echo "$array1[1]";
となります。
部屋番号は「0」から始まりますので、住人「11」はキー「0」の部屋、住人「12」はキー「1」の部屋にほうりこまれています。そういうわけで、$array1[1]は、住人「12」ということになります。
echoは、「表示する」ための命令文です。表示したいものをダブルクォーテーションでくくりますが、ダブルクォーテーションの中でHTMLタグを使う際など、ダブルクォーテーションが必要な場合は、シングルクォーテーションにします。
echo "<div align='center'>こんな感じで</div>";

同様に、アパート$array2を作ります。
$array2 = array("21","22","23","24","25","26","27","28","29");
ヤマダサマノゴユウジンを例にとると、住人としては、「これは、〜」の内容を入れればいいわけです。
21 → ぶっちゃけつまらないですね。
22 → 恐ろしいくらいズレてますね。 とか。

アパート$array3も同様な感じで作っていきます。

あれ?しかし、アパートと部屋番号と住人を決めたものの、それぞれのアパートの中からどうやったらランダムに住人を呼び出せるんでしょうか。

これを解決するのが、array_rand関数です。
これを使うと、配列の中の「部屋番号(キー)」をランダムに取り出してくれます。
ランダムに取り出された「キー」で住人を呼び出せばいいわけです。
まずは、アパート$array1からランダムに「キー」を取り出して、それを$key1に入れ込みます。
$key1 = array_rand($array1);
続いて、取り出した「キー」で住人を呼び出して表示します。
echo "$array1[$key1]";

アパート$array2、$array3も同様です。

<form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>">
<table>
<tr>
<td><input type="radio" name="text1" value="管理人さま" checked>管理人さま</td>
<td><input type="radio" name="text1" value="通りすがり">通りすがり</td>
<td><input type="radio" name="text1" value="名前を名乗れない人">名前を名乗れない人</td>
<td><input type="radio" name="text1" value="2">2</td>
</tr>
</table>
<input type="submit" value="コメント作成" name="submit">
</form>


上記の部分で誰にレスするか、というtext1を送信します。
action="<?php echo $_SERVER["PHP_SELF"]?>"
この部分で、そのPHPファイル自体にtext1の内容を送信しています。
ヤマダサマノゴユウジンではラジオボタンにしていますが、ラムダの方はテキストボックスにしています。

<form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>">
<table>
<tr>
<td><input type="text" name="text1"></td>
<td><input type="submit" value="送信" name="submit"></td>
</tr>
</table>
</form>


あんまり長い入力を受け付けてもアレなので、maxlengthという命令を付け加えて、送信する文字数を制限した方が良いかもしれません。とりあえず、30文字くらいで。
<input type="text" name="text1" maxlength="30">

次に受け取ったtext1を加工してます。
PHPはなにかと安全性が問題となってくるらしいので、素人でも出来そうな簡単な加工を、一応、施しておきます。
とりあえず、受け取ったものを変数$text1に入れ込みます。
$text1 = @$_POST["text1"];

次に、変数$text1の中身のシェルのメタ文字(意味わかっていませんがw)をエスケープしてくれる加工をして、$text2に入れ込みます。
$text2 = escapeshellcmd($text1);

続いて、変数$text2の中身の特殊文字(htmlタグなどに使われる<とか>とか)をエスケープしてくれる加工をして、$text3に入れ込みます。
$text3 = htmlspecialchars($text2);

ラムダでは、こうして加工した$text3を次のような感じで使っています。

echo "最近、";
echo "$text3";
echo "に関しては、";



それから、「送信」や「コメント作成」ボタンが押されるまで何も表示されていませんが、これはif文を使用しています。if文は条件が成立したときのみ、{ } 内の命令が実行されます。
ここではsubmitという名の送信データが送られてきた時に条件が成立するように指定されています。

<?php
if ($_POST['submit']){
ここにifの条件が成立したときに実行する内容を書きます。
}
?>



最後に、この部分で、表示する内容に枠をつけて大きさを指定し、内容が長い時にはスクロールするよう、指定しています。
echo "<div style='width:350px;height:150px;border:1px solid #999999;padding:10px;overflow:scroll;line-height:1.2;'>";

echo "</div>";


width 横幅
height 高さ
border 枠線 1px→太さ solid→実線 #999999→枠線の色
overflow 内容が長いときの指定 scrollでスクロールバーが出ます
padding 余白の大きさ
line-height 行間の高さ


住人の内容を自分好みに書き換えて、Terapadなどのテキストエディタでutf-8に指定して、「comment.php」などのファイル名にして保存します。
レンタルサーバーにアップロードします。

ブログなどに表示する場合、iframeタグを用います。
iframeは他のウェブページを、自分のブログの一部分にテレビを置いて、それを通してみるような感じで表示する命令文です。

<iframe src="comment.phpを置いたアドレス" width="550" height="500" frameborder="0"></iframe>


という感じで自分のブログなどで、表示したい部分に書きます。

widthが横幅。heightが高さです。テレビの幅と横幅を決めるような感じです。
表示する中身が大きいと、スクロールバーが表示されますので、表示されないためには高さと幅を微調整されてください。

興味のあられる方は、あなた好みの「ラムダ」や「ヤマダサマノゴユウジン」作りにトライしてみて下さい。

アパートの住人をアフィリエイトタグに変えれば、ローテーションバナー広告やローテーションテキスト広告も簡単に出来そうな雰囲気ですが、登録していないアドレスにPHPを置いてiframeで表示する場合は、規約違反になる可能性があるかもしれません。
また、アフィリエイトタグのダブルクォーテーションをシングルクォーテーションに変える必要があったりするかもしれませんので、そこがアフィリエイトタグの改変になっちゃう可能性もあるかもしれません。
アフィリエイトで活用するには、もう一ひねり必要みたいです。




この記事へのコメント
もあろま
もあろま
2007年11月08日 01:10
5

afiliateさんたらもう♪「ヤマダサマノゴユウジン」って、どなたのことかと思ったら・・・ネタ帳さんのあの記事読んで「世の中には凄い人がいるもんだソンケー」と思っていたのでツボにはまってしまいました。
コレで私も憧れの「ヤマダサマノゴユウジン」になれるわけですね。きゃぁ〜!!

リンクの変更、恐れ入ります。引越ししたばっかりで今のところノーコメント(でもスパムは300件)なので、やってみようかしら。うふふ。

それしても、PHPの詳細な解説、すばらしいです。本を読んでもよくわからない$arrayと$keyの関係が一目瞭然、目からウロコで、とっても納得です。

afiliate
どおも〜もあろまさま。

ネタ帳さんの記事、面白かったですね。ご友人の方は焼肉をおごってもらう価値は十分にあったと思いますw。
ツボにハマって光栄です。芸人冥利に尽きます。私も焼肉おごらないといけないかなあ。はてブ100ついたら考えましょうかね(笑)。

実践「ヤマダサマノゴユウジン」体験レポお待ちしていますw。

PHPの解説、わかられましたでしょうか。芸人冥利、いやいやPHP初心者冥利に尽きます。内容があっているのかイマイチ不安ですが。
間違いがあったら、ご指摘いただけると助かります。

良かったら試されてみて下さい。
もあろまバージョン期待してますよ〜♪


Yamada
Yamada
2007年11月08日 22:42
こんなところに私の友人が(笑

いつもありがとうございます。

というよりいつも拝読させていただいていますが今回のこの無駄にすごい解説に感動しました。

ラムダとセットで使うともう鬼に金棒でしょうか・・・。
いやいや、ほんとすごいです。

afiliate
どおも〜Yamadaさま。
実は元記事に大ウケさせて頂いて、いつかどこかで使いたいと、ひそかに機会をうかがっておりましたw。ご紹介できる機会が出来て嬉しいです。

自分でも思うのですが、話し出すと、あ、アレも言いたい、コレも言いたい、ここで笑いをとっとかなきゃと、どんどん文章が長くなりますw。自分が理解に苦しんだところとか特に力が入っちゃって、この有様です(笑)。

ラムダにしろ、ヤマダサマノゴユウジンにしろ、も少しなんとかならないかなあとPHPとかJavaScriptとか勉強中です。Yamadaさまに少しでも近づけると良いんですけども。

Yamada
なにを言ってるんですか・・・すでに軽く超えてますってw

PHPの知識だってあくまで未来の自分を楽にするためのスクリプト作りに情熱を燃す怠け者。
上記プログラムも怠けてみるとなれば私の出番でしょうか。

if ($_POST['submit']){
foreach($_POST as $k => $v) {
if(get_magic_quotes_gpc()) {
$v=stripslashes($v);
}
$v=htmlspecialchars($v);
$v=escapeshellcmd($v);
$array[$k]=$v;
}
extract($array);
}
print $text1;

Yamada
↑これはPOSTで送信されたものを受信するための怠けコードですね。
サーバーによってget_magic_quotes_gpcの設定がまちまちなので、とりあえずこれでひとつ脆弱性を回避。どのサーバーにも対応できるので怠けれます。

またこの処理をpostを受ける側の処理頭に書いておけば、
postで送信されるnameが、text1 であれば、$text1に自動的に危険コードをある程度取り除いて変数にしてくれます。
何個送信されててもこのコードが一個記載されていれば、送られてきたものすべて変数にしてくれます。

これを使って一緒に怠けの世界へ。

afiliate
どおも〜Yamadaさま。

いやいや、とても超えてないですよ(笑)
情熱を燃やせる怠け者は素敵だと思いますので、私もぜひお仲間に入りたいと思います。

しかも、サンプルのコードまで教えていただきありがとうございます。ぶっちゃけ全く意味がわからないので(笑)、一行ずつ「PHPによるスーパーアプリケーションサンプル第2版」を片手に解読していきたいと思います。

次回はこのコードを使わせていただいて、プログラムを作りたいと思ってます、というか少しずつ作り初めています。

本当にご丁寧にありがとうございます。

afiliate
自分の「チカッパ」レンタルサーバーで設定を見てみました。
<?php
print "magic_quotes_gpcの設定「1」ならオンです。".get_magic_quotes_gpc();
?>
「1」でした。

ふむふむ、88ページにmagic_quotes_gpcの事が書いてありますね。

foreach($_POST as $k => $v) とか $array[$k]=$v; を行う意味がまだ良くわかっていないので調べてみますね。ぜひ理解して、活用していきたいと思います。

http://oshiete1.goo.ne.jp/qa1024543.html
↑これなのかなあ・・・?読んでみたけどまだ意味がわかってませんw

情熱を燃やす怠け者の世界に、早く行きたいものです〜♪

あ、foreach($_POST as $k => $v) はすごく基本的なことだったみたいですね。
お恥ずかしいです(^^;
http://ww7.tiki.ne.jp/~inabah/php/002_011.htm

extract()関数は58ページにありました。formから受け取ったデータをまとめて変数にセットしてくれるんですね。ここにも書いてありますが、「ユーザーの入力値からHTMLタグを取り除くなど、入力値を安全なデータに変換する工程を経た方がよい」ということなのですね。

text1だけでなく、text2、text3・・・と、まとめてformからデータを受け取る場合、foreachで、$_POSTの中身にあるtext1、text2、text3・・・の数の分だけ繰り返し処理を行うんですね。
(get_magic_quotes_gpc()がオンの場合、一旦stripslashesでエスケープを解除して、)htmlspecialchars、escapeshellcmdで処理を行う。(あ、変数$vはそのまま使って行って問題なかったですね。いちいち変えてましたorz)
処理したものを配列の値に入れ込む。これが受け取ったデータの数だけ繰り返し処理されるんですね。
全てのデータが(get_magic_quotes_gpc()がオンの場合、一旦stripslashesでエスケープを解除して、)htmlspecialchars、escapeshellcmdで処理されたら、まとめて変数にセットする。ということなのですね。

なるほど、受け取るデータが増えれば増えるほど怠けることが出来ますね。コレは便利。早速使わせて頂きます!ありがとうございました!!

もあろま
もあろま
2007年11月09日 11:35
5

★afhiliateさ〜ん★
コメントありがとうございました。

古いPC立ち上げてIE6でみたら、見事な落ち込み><
猫ブログも落ちてました。
で、1px片方を削って、1px片方を増やしてみました。
いちおう、私の古いPC&IE6では直っているように見えるんですが・・・。
どんなもんでしょ?

「怠けの世界」←がぁ〜コレ大好きなフレーズです^^
私もご一緒できるよう、「怠けの世界」に入るために怠けないでPHP本学習しなくっちゃ!今のところ、2二人の足元にも遠く及びません。

afiliate
どおも〜もあろまさま♪

直ってますよ〜。良かったです。
でも、原因がちとわからなかったですね〜。IE6、相変わらず良くわからんヤツ(笑)。

私のレベルって記事に書いているとおりのレベルなので、すぐ追いつけますよ〜。

今後も勉強し続けたいと思っていますが、わかったことがありましたら、また解説させていただきます。
着いてきて下さい、と言うか、追い越して置いていかないで下さいよ〜(笑)。



この記事にコメントする

注:livedoorBlogの仕様により、コメントは400字以内となっております。
コメントが長くなりそうな場合は、
メモ帳にコピペなどされておかれることをお勧めいたします。

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 
トラックバックURL