我正在尋找一種最簡單的方法來鎖定文件。下面的代碼出口從MySQL通過PHP代碼.csv文件:PHP - 鎖定導出的文件
<?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文件到壓縮文件,以及e之前創建的密碼xtracting它。
我不是在尋找高安全的方式來鎖定此文件。然而,當谷歌搜索時,我發現這個代碼:
<?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文件空,但;會彈出一個錯誤「文件名」是隻讀的,並強制我將文件另存爲另一個名稱。但是在保存爲文件後,您仍然可以編輯字段並保存。如何禁用保存爲?
我在PHP手冊中搜索了chmod(),發現像這樣chmod(「/ somedir/somefile」,0777)但我不' t請知道在哪裏放置這段代碼請幫助我:( – Alihamra
fclose($ f);請讓我知道它適用於您或不是 –
我已經將代碼放在fclose之後,並且在測試時它會打開文件,但當試圖更改字段中的值並進行文件保存時出現「filename」爲只讀的錯誤,這正是我想要的,但是...它自動要求將文件另存爲另一個文件名,製作文件領域可編輯。有沒有辦法不要求另一個另存爲選項? – Alihamra