phpを用いたアクセスカウンタを利用してアンケートページのようなものを作成しています.
phpを用いたアクセスカウンタを利用してアンケートページのようなものを作成しています. 投票ページから投票すると各ページに飛んでアクセスカウンタが進み, すぐに結果ページにリダイレクトするというものです. ここでアクセスカウンタがあるページから結果ページのリダイレクトがうまくいきません. 調べたところheader関数の前に画面出力があるとエラーが出るとのことですが, header関数を移動させても別のエラーが出たりでうまくいきません. どなたか添削していただけると幸いです. よろしくお願いします. 以下ソースコード <?php //カウント数が記録してあるファイルを読み書きできるモードで開く $fp = fopen('ans1.dat', 'r+b'); //ファイルを排他ロックする flock($fp, LOCK_EX); //ファイルからカウント数を取得する $count = fgets($fp); //カウント数を1増やす $count++; ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>アクセスカウンター</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <h1>アクセスカウンター</h1> <div class="counter-area"> <!-- ファイルから取得したカウント数を表示する --> <span class="access-count"><?php echo $count; ?></span> </div><!-- /.counter-area --> </body> </html> <?php //ポインターをファイルの先頭に戻す rewind($fp); //最新のアクセス数をファイルに書き込む fwrite($fp, $count); //ファイルのロックを解除する flock($fp, LOCK_UN); //ファイルを閉じる fclose($fp); header('Location: ./distribution.php'); ?>
PHP・52閲覧・500
ベストアンサー
「htmlを返す」ことと「locationヘッダで画面遷移させる」ことを(httpレスポンスで)同時に行うことは出来ません。 htmlのmeta要素で(あるいはJavaScriptで)画面遷移させるしかないです。
meta要素で遷移させるときは、 https://developer.mozilla.org/ja/docs/Web/HTML/Element/meta の「refresh」を使います(秒数と遷移先URLを記述する)。 JavaScriptなら(setTimeoutで)一定秒数待ってから、location.href を書き替えて遷移させればよろしいかと。 https://developer.mozilla.org/ja/docs/Web/API/setTimeout #phpはまったく無関係になりますが(汗
質問者からのお礼コメント
ご丁寧に教えてくださってありがとうございました. metaタグで実装しました. また躓いたときに教えていただければ嬉しいです.
お礼日時:6/28 23:39