2016-07-03 21 views
0

私はcsvファイルに3つの変数を保存しようとしています。私は変数のデータを取得し、それらを含む配列を作成しています。私はファイルを開いて書き込むことができます。私は、すべてのページのロード時に以下のデータを保存したいと思います: -PHP配列をcsvに - ファイルを常に書き直します

私の問題は、すべてのページの読み込み時に、それだけではなく、新しいデータinsterのファイルを書き換えていることである日付 - リファラー - ユーザエージェント 。

すべてのコメントをいただければ幸いです。

<?php 

session_start(); ?

if (!isset($_SESSION["origURL"])) 
$_SESSION["origURL"] = @$_SERVER["HTTP_REFERER"]; 

$referer = @$_SERVER['HTTP_REFERER']; 
$userAgent = @$_SERVER['HTTP_USER_AGENT']; 
$date = date('Y-m-d H:i:s'); 

$visitorData = array("referer", "userAgent", "date"); 
$result = compact($visitorData); 
print_r($result); 

$fp = fopen('file.csv', 'w'); 

foreach ($result as $fields) { 
    fputcsv($fp, $result, $delimiter = ',', $enclosure = '"'); 
} 

fclose($fp); 
exit(); 

>

+0

追加モードの使用 - '$ FP =のfopen ( 'file.csv'、 'a'); ' – splash58

答えて

1

@ splah58が言うように、あなたはこのように、データを追加する追記モードでファイルを開く必要があります。

if(!isset($_SESSION["origURL"])) 
    $_SESSION["origURL"] = @$_SERVER["HTTP_REFERER"]; 

$referer = @$_SERVER['HTTP_REFERER']; 
$userAgent = @$_SERVER['HTTP_USER_AGENT']; 
$date = date('Y-m-d H:i:s'); 

$visitorData = array("referer", "userAgent", "date"); 
$result = compact($visitorData); 
print_r($result); 

$fp = fopen('file.csv', 'a'); // 'a' means 'append' instead of 'w' for 'writing' which always delete the file's content 

foreach ($result as $fields) { 
    fputcsv($fp, $result, $delimiter = ',', $enclosure = '"'); 
} 

fclose($fp); 
exit(); 
+0

あなたは正しいです!ありがとうございました! 私はもう一つ奇妙な行動を経験しました。 1回のセッションで3回連続してログを記録する理由はありますか? – Gyorgy

+0

これは、PHPページが1回のセッションで3回ロードされたためです:) – ClementNerma

+0

つまり、1ページの読み込み= 3行のデータを意味します。 – Gyorgy

関連する問題