0

我正在寻找一种最简单的方法来锁定文件。以下代码通过 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 文件导出为空,但在尝试在任何字段中写入内容并保存时;将弹出一个错误“文件名”是只读的,并迫使我将文件另存为另一个名称。但保存为文件后,您仍然可以编辑字段并保存。如何禁用另存为?

4

2 回答 2

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);

?> 
于 2012-09-27T09:01:08.840 回答
0

您可以使用 chmod() 函数更改其权限。

您可以传递参数,例如

0777 这意味着读写的完全权限,您可以分配相同的方式,没有人可以在文件中读取或写入。

于 2012-09-27T09:12:35.590 回答