人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPで修行中の者です。

IPのログを取り
ログファイルと比較して、
マッチしたら
「毎度ありがとうございます!」と文字を出力。(IPが残っている方)

マッチしなかったら、
「当サイトにお越し頂き誠にありがとうございます」と文字を出力。(初めての方)

さらにIPをログして行き、
1000行に達したら
古い者から上書きしてゆくPHPを考えています。

1回ページ訪れた人とそうでない人を振り分け
効果的なコメントを表示する事が目的です。

以前にCGIで制作したのですが
他のphpと混在するページになり煩雑なので統一しています。

変換出来る方いらしたら
ご教授ください。

ログファイルはちなみにlog.csv、SQL等は使わないシンプルなものにしたいです。

CGIでの記述は以下にアップしました。
http://firestorage.jp/download/b28dd0f7e100c87d789657fc156df2d0bf07ce62

●質問者: admn
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Cherenkov
●0ポイント

IPよりもcookieを使ったほうが適切だと思います。
とほほのCookie入門


admnさんのコメント
cookieは使いません。あくまでIPログで運用します。

2 ● Cherenkov
●100ポイント ベストアンサー

修行として書いてみました。

<html>
<head>
<meta charset="UTF-8" />
</head>
<body>
<?php
$filename = './log.csv';
$ipLogArray = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$userIp = $_SERVER["REMOTE_ADDR"];
if (in_array($userIp, $ipLogArray)) {
echo '毎度ありがとうございます!';
} else {
if (count($ipLogArray) >= 1000) {
unset($ipLogArray[0]);
}
$ipLogArray[] = $userIp;
$ipLog = join("\n", $ipLogArray);
file_put_contents($filename, $ipLog);
echo '当サイトにお越し頂き誠にありがとうございます';
}
?>
</body>
</html>

Cherenkovさんのコメント
ログは1行ずつIPを書く。 IPが1000個に達したら1行目を削除し、最終行にIP追加。

admnさんのコメント
ありがとうございます。今検証していますが、file_put_contentsでずっこけます。 PHP 5.2.8でページ作ってるんですけど、fopen,fwriteを使って書き込んでみます。

admnさんのコメント
すいません。昨晩やったらfile_put_contentsでこけていたのですが、 今はちゃんと動きます!

Cherenkovさんのコメント
log.csvが存在しない状態で実行すると一発目にエラーがでて、log.csvが生成されますね。

admnさんのコメント
お返事ありがとうございます。 そうみたいですね。 今回はありがとうございました。 やりたいことが完成しました。 また、機会がございましたら宜しくお願い致します。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ