続きです。
【ファイル名】complete.php
<?php
/*
登録完了サイトに貼り付けるためのプログラム
このプログラムで、ログファイルへの保存も行う
*/
/*
ログファイルのパスを設定
*/
define('AFFILIATE_LOG_CSV', './logs.csv');
session_start(); //セッションを開始する
if(isset($_SESSION['ad_id']) === true && isset($_SESSION['ad_url']) && isset($_SESSION['ad_name'])){ //link.phpで設定した値が存在したら
if(file_exists(AFFILIATE_LOG_CSV)){ //ログファイルがあったら
$fp = fopen(AFFILIATE_LOG_CSV, 'a+');//追記モードで開く
if(!$fp){ //開けてなかったら
exit(); //プログラムを止める
}
/*
書き込んでる最中に別のアクセスがあってログが壊れないように
ロックをかける
*/
if(!flock($fp, LOCK_EX)){ //ロックが掛けられなかったら
exit(); //プログラムを止める
}
/*
書きこむデータを準備
*/
$write = array();
$write[] = $_SESSION['ad_id'];
$write[] = $_SESSION['ad_url'];
$write[] = $_SESSION['ad_name'];
$write[] = date('Y-m-d H:i:s', time());//現在時刻も保存しとく
$write_string = implode(',', $write) . "\r\n";//配列をカンマ区切りで結合して改行コードを付加
fwrite($fp, $write_string); //ファイルへ書き込み
fclose($fp); //ファイルを閉じる
//最後に、セッションにログが残りっぱなしになっちゃうのでそれらを削除する
$_SESSION = array();
//Cookieが残るので削除
if($_COOKIE[session_name()]){
setcookie(session_name(), '', time()-42000);
}
session_destroy();//セッションもおわらす
}
}
?>
といった二つのファイルと、各種データ記録用のファイルが必要で
【名前】links.csv
1,url,サイトの名前
2,url,サイトの名前
というフォーマットで必要なリンク先を書いてください
【名前】logs.csv
これは空のファイルを作って置いてください。
以上、あわせて4つのファイルを同じ場所に設置してください。
使い方は、大体前回の回答どおりで、
http://aaa.com/link.php?id=1
などとしてaタグにでも張ると、カートにリダイレクトして
カートの完了画面で
http://aaa.com/complete.php
を貼り付けておけばデータが記録される感じです。
今回setcookieなどの記述がないのは、セッションを使う場合にセッションと連携して自動的にある一意なCookieが吐き出されるからです。書いてないけどつかっている、といった感じです。
ちなみに、プログラム上、Cookieに有効期限を付けていないので、ブラウザが閉じるとCookieも削除されます。
それが問題ある場合は、
session_start();
と記述のある場所の前に、
session_set_cookie_params(60 * 60 * 24); //有効期限となる秒数を書く
を追記してください。
尚、管理画面までは作れないので、logs.csvをFTPでダウンロードして、Excelとかで開いてアクセス数を手動で集計する、
という想定です。
また、これはあまり厳密な数を集計したいということではないと判断し、ある程度ルーズなつくりになってます。
例外処理的な部分がいくつか抜けてるという意味で。
とりあえずサーバにUPして動かしてみてもらえますか。
お礼
無事に記録できました!hogehoge78さんのおかげです。 他の件はまた今後の検討課題になるかもしれませんが、ここまで実現できるなんて本当にうれしい限りです。 誰かのためにここまでご丁寧に、本当にご親切な方なんだなあと思い感謝感激です。 hogehoge78さんにたくさんいいことが訪れますように☆彡 本当にありがとうございました。\(^-^ )♪