留言本小实验

实验目的:

利用PHP实现发布留言,并存在txt文本文件中,还可以从文本文件中读取留言,并显示在网页上。

实验代码:

先要用个表单提交留言,写一个简单的html如下:

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 3 <head>
 4     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
 5     <title>表单提交</title>
 6 </head>
 7 <body>
 8 <form action="postMsg.php" method="post">
 9     <p>留言标题:<input type="text" name="title" /></p>
10     <p>留言内容:<textarea name="content" id="" cols="30" rows="10"></textarea></p>
11     <p><input type="submit" value="提交" /></p>
12 </form>
13     
14 </body>
15 
16 </html>
postMsg.html

然后提交的数据到哪里呢,action="postMsg.php"表明提交给postMsg.php,然后再处理提交过来的数据,处理过程如下代码注释部分:

 1 <?php 
 2 header("Content-Type:text/html; charset=utf-8");//设置页面内容是html编码格式是utf-8
 3 
 4 // print_r($_POST);
 5 
 6 //开始留言
 7 //定义存储格式,以字符串“title,content”形式存储在文本文档上
 8 $str = $_POST['title'] . "," . $_POST['content'] . "\n";
 9 
10 //php打开文件
11 //fh是一个变量,为资源类型的变量
12 $fh = fopen('./msg.txt', 'a');
13 
14 //往文件里写东西,沿着管子(资源)写
15 fwrite($fh,$str);
16 
17 //关闭资源
18 fclose($fh);
19 
20 //提示留言成功,并有个返回按钮
21 echo "留言成功" ,"\n" , '<input type="button"  value="返回"  onclick="JavaScript:history.go(-1)" >';
22 
23  ?>
postMsg.php

这样就能在当前文件下的msg.txt文本文件下看到留言。

接下来就是如何读取留言了,在msg.php中遍历整个留言本,并显示出来,最好都加上链接,点进去直接进入留言查看留言内容:

 1 <?php 
 2 header("Content-Type:text/html; charset=utf-8");//设置页面内容是html编码格式是utf-8
 3 
 4 //定义变量tid,表示留言的序号
 5 $tid = $_GET['tid'];
 6 
 7 // echo '你想看第' ,$tid,'行留言';
 8 
 9 //打开得到文件
10 $fh = fopen('./msg.txt' , 'r');
11 
12 $i = 1;
13 //以列表形式遍历,并显示留言标题
14 echo '<ol>';
15 while(($row=fgetcsv($fh)) != false) {
16 
17     echo '<li><a href="readMsg.php?tid=' , $i ,'">' , $row[0] , '</li>';
18     $i ++; 
19 }
20 echo '</ol>';
21 
22  ?>
msg.php

最后是读取留言了:

 1 <?php 
 2 header("Content-Type:text/html; charset=utf-8");
 3 
 4 $tid = $_GET['tid'];
 5 
 6 // echo '你想看第' ,$tid,'行留言';
 7 
 8 //打开得到文件
 9 $fh = fopen('./msg.txt' , 'r');
10 
11 $i = 1;
12 
13 while(($row=fgetcsv($fh)) != false) {
14 
15     if($i == $tid){
16         echo '<h1>' , $row[0] , '</h1>';
17         echo '<p>' , $row[1] , '</p>';
18     }
19     $i ++;
20 }
21 
22  ?>
readMsg.php

实验总结:

  1. 关于$_POST和$_GET区别:

    $_GET
    就是地址传值,用 '?' 开始传值,多个值间用 '&' 号分隔,多用于简单的传值,比如说看新闻需要新闻id一般就会用地址传值,$_GET的好处是传值可见,也就是只要一个地址就ok了,容易分享,缺点是不安全,而且有限制字节数.

    $_POST
    这种提交方式不可见,也就是传的值不会出现在URL地址中,一般用于注册和登录,这种方式因为要安全要高一点,一般会用POST方式,而且POST方式没有限制字节数,填写文章,需要提交大数据的,表单中含有上传文件的,都会使用POST.

  2. fopen(),fwrite()和fclose()函数:

    fopen()函数打开文件或者URL.如果打开失败,本函数返回FALSE.语法为:fopen(filename,mode,include_path,context),具体参见PHP fopen() 函数

    fwrite()函数写入文件(可安全用于二进制文件).语法为:fwrite(file,string,length),具体参见PHP fwrite() 函数

    fclose()函数关闭一个打开文件.语法为:fclose(file),具体参见PHP fclose() 函数

  3. fgetcsv()函数

    fgetcsv()函数从文件指针中读入一行并解析 CSV 字段。与 fgets() 类似,不同的是 fgetcsv() 解析读入的行并找出 CSV 格式的字段,然后返回一个包含这些字段的数组。 fgetcsv() 出错时返回 FALSE,包括碰到文件结束时。语法为:fgetcsv(file,length,separator,enclosure),具体参见PHP fgetcsv() 函数

  4. 这个实验还存在很多bug,功能也不是很完善,只是PHP入门的小实验,谨以此作为自己学习的轨迹。
谨以此记录自己学习的轨迹,沉淀积累知识的笔记。
原文地址:https://www.cnblogs.com/Jackie0714/p/4880886.html