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

phpでファイルへの書き込み方法について。

WEBフォームからGETで送信したワードを、
ファイルへ保存したいと思っています。

ヤフーを例にすると、
ヤフーの検索で検索したワードを
全てファイルへ保存していきたい、というイメージです。

GETの場合、URLに直接打ち込んでも検索できますが、
フォームにワードを入れて送信したときのみ
ファイルへ保存したいと思っています。

さらに、送信後の結果画面にもフォームをおき、
そこからもワードを送信できるようにしたいです。


簡単にコードを書いてみましたが、
何故か同じワードが複数個ずつ書き込みされて困っています。

うまい方法があれば、アドバイスお願いします。

■今試してみたコード
(フォーム送信時にhiddenでfrom_formに1を入れています)

switch ($query) {
case '':
break;
case ($query != ""):
if ($from_form == "1") {
kakikomi($query);
}
break;
default:
break;
}

*関数は別ファイルに書いてあり、インクルードしてます。
function kakikomi($query) {
$word = $query . "\n";
$pointer = fopen( "./hozon_text.php", "a+" );
flock( $pointer, LOCK_EX );
fwrite( $pointer, $word );
flock( $pointer, LOCK_UN );
fclose( $pointer );
}


●質問者: onigirin
●カテゴリ:ウェブ制作
✍キーワード:CASE Flock PHP switch URL
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● tezcello
●100ポイント ベストアンサー

http://q.hatena.ne.jp/1181172352 がまだ解決していないって事ですね?


特に問題は無さそうに思うのですが。

とりあえずチェック点を。

◎質問者からの返答

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

解決していなかったので、整理して再質問してみました。

$queryには、

$query= $_GET['q'];

としています。

var_dump()したところ、

しっかり文字は正しく入っていました。

??string(15) "文字列"

その他のvar_dumpも同じでした。


オープンモードを「w+」「r+」にしてみたところ、

文字列は「一度」だけきちんとファイルに書き込まれました。

そこで「a+」に戻したところ、また3連続で書き込まれてしまいました。

他のチェック項目も見てみましたが、

今のところ特に問題がなさそうでした。

PHP5.1.4みたいですが、

今借りているレンタルサーバーの仕様なんですかねぇ・・・。

ファイルに追記していく形ではなく、

他の方法も検討した方が良さそうですね。

関連質問


●質問をもっと探す●



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