对于一个文件的“读”或“写”操作,基本步骤如下:
步骤01 打开文件。
步骤02 从文件里读取数据,或者向文件内写入数据。
步骤03 关闭文件。
打开文件的前提是,文件必须是存在的。如果不存在,则需要建立一个文件,并且在所在的系统环境中,代码应该对文件具有“读”或“写”的权限。
以下实例介绍PHP如何处理文件数据。在这个实例中需要把客人订房填写的信息保存到文件中,以便以后使用。
【例11.1】
步骤01 在PHP文件同目录下建立一个名称为booked.txt的文本文件,然后创建11.1.html,写入如下代码:
步骤02 在11.1.html文件的同目录下创建11.1.php文件,代码如下:
<?php
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
$customername = trim($_POST['customername']);
$gender = $_POST['gender'];
$arrivaltime = $_POST['arrivaltime'];
$phone = trim($_POST['phone']);
$email = trim($_POST['email']);
if( $gender == "m"){
$customer = "先生";
}else{
$customer = "女士";
}
$date = date("H:i:s Y m d");
$string_to_be_added = $date."\t".$customername."\t".$customer." 将在
".$arrivaltime." 天后到达\t联系电话:".$phone."\t Email: ".$email ."\n";
$fp = fopen("$DOCUMENT_ROOT/booked.txt",'ab');
if(fwrite($fp, $string_to_be_added, strlen($string_to_be_added))){
echo $customername."\t".$customer." ,您的订房信息已经保存。我们会通过Email和电话
和您联系。";
}else{
echo "信息存储出现错误。";
}
fclose($fp);
?>
步骤03 运行11.1.html文件,最终效果如图11-1所示。
步骤04 在表单中输入数据,【客户姓名】为“李莉莉”、【客户性别】为“女”、【到达时间】为“三天后”、【电话】为“159XXXXX266”。单击【确认订房信息】按钮,浏览器会自动跳转到formfilehandler.php页面,并且同时会把数据写入booked.txt。如果之前没有创建booked.txt文件,则PHP会自动创建。运行结果如图11-2所示。
连续写入几次不同的数据,保存到booked.txt中。用写字板打开booked.txt,运行结果如图11-3所示。如果不能写入信息,需要检查是否有向硬盘的文件写入信息的权限。
【案例分析】
(1)其中,代码$DOCUMENT_ROOT = $_SERVER[‘DOCUMENT_ROOT’];通过使用超全局数组$_SERVER来确定本系统文件的根目录。在Windows桌面开发环境中的目录是c:/wamp/www/。
(2)$customername、$arrivaltime、$phone这3个变量为form4file.html通过POST方法给formfilehandler.php传递的数据。
(3)$date为用date()函数处理的写入信息时的系统时间。
(4)$string_to_be_added是要写入booked.txt文件的字符串数据。它的格式是通过“\t”和“\n”完成的。“\t”是tab,“\n”是换新行。
(5)$fp = fopen(“$DOCUMENT_ROOT/booked.txt”,’ab’);是fopen()函数打开文件并赋值给变量$fp。fopen()函数的格式是fopen(“Path”, “Parameter”)。其中,”$DOCUMENT_ROOT/booked.txt”是路径(Path),’ab’是参数(Parameter)。’ab’中的a是指在原有文件上继续写入数据,b则是规定了写入的数据是二进制(binary)的数据模式。
(6)fwrite($fp, $string_to_be_added, strlen($string_to_be_added));是对已经打开的文件进行写入操作。strlen($string_to_be_added)是通过strlen()函数给出所要写入字符串数据的长度。
(7)在写入操作完成之后,用fclose()函数关闭文件。