我正在寻找一种最简单的方法来锁定文件。以下代码通过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'); ?>
我试过了!但它不起作用。
谢谢
编辑:使用flock
$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”是只读的,并强制我将文件另存为另一个名称。但是在保存为文件后,您仍然可以编辑字段并保存。如何禁用另存为?
答案 0 :(得分:1)
PHP函数flock怎么样?小例子:
<?php
$file = fopen("test.txt","w+");
// exclusive lock
if (flock($file,LOCK_EX)){
//write to file here
// release lock
flock($file,LOCK_UN);
}
else{
echo "Could not lock file!";
}
fclose($file);
?>
答案 1 :(得分:0)
您可以使用chmod()函数更改其权限。
你可以传递像
这样的参数0777表示读写的完全权限,您可以通过该方式分配任何人无法读取或写入文件。