お世話になっております。
只今、アクセス解析を作っておりまして、クッキーの意義を見直したく質問させて下さい。
と、申しますのも、以下のようなスクリプトを設置しているのですが、殆どの人が初めての訪問者として認識してしまう状況となっております。
#IDと時刻などを登録などを登録する訪問者用テーブル(access_visitorテーブル)と、そのIDを含め訪問したURLや時刻などの詳細を登録するテーブル(analyzerテーブル)を設置しています。
if(!isset($_COOKIE["user_id"])){//初めての訪問者だったら、access_visitor_TBに登録。そしてuser_idを登録&取得
//access_visitorテーブルに登録し、
//その登録したIDを含め、訪問したURLや時刻などをanalyzerテーブルに登録
}else{//再訪問者だったら
$user_id = addslashes($_COOKIE["user_id"]);//このuser_idは、 access_visitorのIDを指しています。
$visit_date = $_COOKIE['visit_date'];//前回訪問時刻
$sql= "select * FROM access_visitor WHERE user_id = '$user_id'";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
if($rows == 1){
//analyzerテーブルにデータ登録
}else{
//念のため、ここでもaccess_visitorテーブルに登録し、
//その登録したIDを含め、訪問したURLや時刻などをanalyzerテーブルに登録
}
}
//クッキーセット
setcookie("user_id", $user_id, time() + 60*60*24*30*12, "/");
setcookie("visit_date", $date, time() + 60*60*24*30*12, "/");
以上のような感じですが、どこか不適切なところはありますでしょうか?
何度も作りかえ、現在に至っておりますが、上記のようなスクリプトだと、殆どの方にクッキーをセットすることが出来ず($_COOKIE["user_id"]を取得できず)、初めての訪問者として処理されてしまいます。
お忙しいなか恐縮ですが、ご指摘など頂戴出来れば幸いです。宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
setcookieの前に、改行などの文字が出力されていると、そこでheader送信は完了してしまうので、cookieにセット出来ません。
この場合、setcookie() はエラーは出さずに、falseを返すだけなので、
if(! setcookie(略) ){ echo "header送信済み、cookie不可"; }
の様にチェックしてみて下さい。
buffering を行うようにすれば、この手の間違いは、吸収されるのだけど。
http://jp.php.net/manual/ja/function.setcookie.php
「注意」の項目参照
hrm_mmmさんへ
こんばんは。お休みの中、ご親切な回答をありがとう御座います。
>setcookieの前に、改行などの文字が出力されていると、そこでheader送信は完了してしまうので、cookieにセット出来ません。
そうでした。
実は今回作っているものは、別のドメイン(サーバ、htmlファイル)でも利用出来るよう、よく見かける無料で利用できるアクセス解析のように、<script src='http://~>といったソースを貼ることで解析出来るようなものを考えていたのですが、この場合(設置する場所により文字の出力が行われてしまう)は、どのようにすれば宜しいのでしょうか。
実際に設置するために作ったソースは、
<script language="JavaScript">
<!--
document.write("<script src='http://www.○○○.com/script/analyzer.php?id=1&ref=");
document.write(document.referrer+"&url=");
document.write(document.URL+"' />");
// -->
</script>
こんな感じです。
引続きアドバイスを頂戴出来れば幸いです。
No.2
- 回答日時:
まずは、cookieの仕組みの基本知識を得るのが先決かとも思います。
http://www.futomi.com/lecture/cookie/index.html
参考URL:http://www.futomi.com/lecture/cookie/index.html
こんばんは。お世話になっております。
参考になるサイトをお教えいただき、有難う御座います。
クッキーの知識をもう少し深めてから、再度質問いたします。有難う御座いました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) テキストボックスの値をテーブルに入力したい 2 2022/06/28 12:08
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Access(アクセス) Dlookupにエラーがでてしまう 1 2022/10/31 14:35
- Excel(エクセル) エクセル関数の詳しい方に質問です 2 2023/01/12 12:48
- MySQL SQLで日付別のIDを生成するには 3 2022/10/09 10:34
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
OracleからAccessへのインポート
-
Yomi-search(PHP)を設置する...
-
変数にNULLを代入したい
-
バインドするデータを切替えしたい
-
クエリObjectをforeachで回す時...
-
実行時エラー3131 FROM 句の構...
-
エクセルVBAについて
-
SQL文が実行できません
-
VBAをつかってクエリの情報を抽...
-
PHP&MySQLでの文字列+数列の一...
-
Q&Aサイトを作成していてURLの...
-
VB.NET エラーになる箇...
-
Resource id #3 をフィールドの...
-
SQL文の実行に失敗しました???
-
php データ削除
-
PHPで[]の使い方について
-
アラートでyes noを作りたいです。
-
phpのエラーについてです
-
PHPのプルダウンメニューにDBの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
変数にNULLを代入したい
-
phpにて出欠登録管理を作成して...
-
phpでテーブルを作る際変数によ...
-
csvをDBへ読み込んだら、NULLが...
-
SQLで返り値が空とでる
-
ヒアドキュメントでSQLを書く事...
-
php sqlite count 列数取得
-
OracleからAccessへのインポート
-
変数を組み入れたい
-
日またぎの計算
-
Accessへ日付をINSERT
-
任意の値の取得
-
クエリObjectをforeachで回す時...
-
PHPでいいね機能を作りたいので...
-
会員番号等に利用するダブらな...
-
PHP PDOを利用してカラムの削除...
-
SQL CASE 文について
-
phpを使用し、カテゴリー別に表...
-
トランザクション処理
おすすめ情報