簡體   English   中英

PHP-鎖定導出的文件

[英]PHP - locking an exported file

我正在尋找一種最簡單的方法來鎖定文件。 以下代碼通過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”為只讀,並強制我將文件另存為另一個名稱。 但是保存為文件后,您仍然可以編輯字段並保存。 如何禁用另存為?

PHP函數群又如何呢? 小例子:

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

?> 

您可以使用chmod()函數更改其權限。

你可以像這樣傳遞參數

0777表示對讀寫具有完全權限,您可以分配相同的方式,使任何人都無法讀寫文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM