当前位置:  首页>> 技术小册>> PHP8入门与项目实战(5)

对于一个文件的“读”或“写”操作,基本步骤如下:

步骤01 打开文件。

步骤02 从文件里读取数据,或者向文件内写入数据。

步骤03 关闭文件。

打开文件的前提是,文件必须是存在的。如果不存在,则需要建立一个文件,并且在所在的系统环境中,代码应该对文件具有“读”或“写”的权限。

以下实例介绍PHP如何处理文件数据。在这个实例中需要把客人订房填写的信息保存到文件中,以便以后使用。

【例11.1】

步骤01 在PHP文件同目录下建立一个名称为booked.txt的文本文件,然后创建11.1.html,写入如下代码:

步骤02 在11.1.html文件的同目录下创建11.1.php文件,代码如下:

  1. <?php
  2. $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
  3. $customername = trim($_POST['customername']);
  4. $gender = $_POST['gender'];
  5. $arrivaltime = $_POST['arrivaltime'];
  6. $phone = trim($_POST['phone']);
  7. $email = trim($_POST['email']);
  8. if( $gender == "m"){
  9. $customer = "先生";
  10. }else{
  11. $customer = "女士";
  12. }
  13. $date = date("H:i:s Y m d");
  14. $string_to_be_added = $date."\t".$customername."\t".$customer." 将在
  15. ".$arrivaltime." 天后到达\t联系电话:".$phone."\t Email: ".$email ."\n";
  16. $fp = fopen("$DOCUMENT_ROOT/booked.txt",'ab');
  17. if(fwrite($fp, $string_to_be_added, strlen($string_to_be_added))){
  18. echo $customername."\t".$customer." ,您的订房信息已经保存。我们会通过Email和电话
  19. 和您联系。";
  20. }else{
  21. echo "信息存储出现错误。";
  22. }
  23. fclose($fp);
  24. ?>

步骤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()函数关闭文件。