ファイルをロックする最も簡単な方法を探しています。次のコードは、php コードを介して mysql から .csv ファイルをエクスポートします。
<?php
require_once('connect_db.php');
$fdate = $_POST['fdate'];
$tdate = $_POST['tdate'];
//Selecting Items based on Date
$result = mysql_query("SELECT item_no, qty, discount_price, date FROM sold_items WHERE date BETWEEN '".$fdate."' AND '".$tdate."' ORDER BY date Desc");
//Check if File Name Exists
$filename = $name = "C:/Sales-{$tdate}".".csv";
$index = 1;
while(file_exists($filename)) {
$filename = $name.'--'.$index.".csv";
$index++;
}
//Fputs the Table Headers
fputcsv($f, array('Item No', 'Qty', 'Sell Price', 'Date'));
//Fputcsv adds records to csv file
while($row = mysql_fetch_array($result, MYSQL_NUM))
{
fputcsv($f, $row);
}
//Close file
fclose($f);
?>
私が知る必要があるのは、次のいずれかを実行するコードだけです。
.csv ファイルを開こうとするとパスワードで保護される
このファイルを編集できないようにするフィールドをロックする
または、この .csv ファイルを zip ファイルに変換し、解凍する前にパスワードを作成します。
このファイルをロックするための安全性の高い方法を探しているわけではありません。ただし、グーグルで調べていると、次のコードが見つかりました。
<?php echo system('zip -P pass file.zip file.txt'); ?>
やってみた!しかし、それは機能していません。
ありがとうございました
編集:群れの使用
$file = fopen("{$filename}", "w+");
// exclusive lock
if (flock($file,LOCK_EX)){
//Fputs the Table Headers
fputcsv($f, array('Item No', 'Qty', 'Sell Price', 'Date'));
//Fputcsv adds records to csv file
while($row = mysql_fetch_array($result, MYSQL_NUM))
{
fputcsv($f, $row);
}
flock($file,LOCK_UN);
}
else{
echo "Could not lock file!";
}
fclose($file);
?>
csvファイルは空でエクスポートされますが、フィールド内に何かを書き込んで保存しようとすると; " filename " is read-only というエラーが表示され、別の名前でファイルとして保存する必要があります。ただし、ファイルとして保存した後でも、フィールドを編集して保存できます。名前を付けて保存を無効にするには?