【PHP】——留言本输入与读取功能的实现

留言本输入与读取功能的实现

——【MR__欢先生】

1.概念梳理

1)fopen—打开文件或者URL

resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] )

  fopen() 是将filename指定的名字资源绑定到一个流上。

  其实就是fopen("指定的本地文件",“指定该流的访问类型”);

$mh=fopen('F:\\a.txt', 'a');//1.在F:盘打开a.txt文件,并且写入方式打开

a).mode参数:    
摘自PHP文档"php_manual_zh.chm"

'r' 只读方式打开,将文件指针指向文件头。  
'r+' 读写方式打开,将文件指针指向文件头。  
'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。  
'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。  
'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。  
'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。  
'x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。  
'x+' 创建并以读写方式打开,其他的行为和 'x' 一样。  
'c' Open the file for writing only. If the file does not exist, it is created. If it exists, it is neither truncated (as opposed to 'w'), nor the call to this function fails (as is the case with 'x'). The file pointer is positioned on the beginning of the file. This may be useful if it's desired to get an advisory lock (see flock()) before attempting to modify the file, as using 'w' could truncate the file before the lock was obtained (if truncation is desired, ftruncate() can be used after the lock is requested).  
'c+' Open the file for reading and writing; otherwise it has the same behavior as 'c'.  



Note: 

不同的操作系统家族具有不同的行结束习惯。当写入一个文本文件并想插入一个新行时,需要使用符合操作系统的行结束符号。基于 Unix 的系统使用 \n 作为行结束字符,基于 Windows 的系统使用 \r\n 作为行结束字符,基于 Macintosh 的系统使用 \r 作为行结束字符。 

如果写入文件时使用了错误的行结束符号,则其它应用程序打开这些文件时可能会表现得很怪异。 

Windows 下提供了一个文本转换标记('t')可以透明地将 \n 转换为 \r\n。与此对应还可以使用 'b' 来强制使用二进制模式,这样就不会转换数据。要使用这些标记,要么用 'b' 或者用 't' 作为 mode 参数的最后一个字符。 

默认的转换模式依赖于 SAPI 和所使用的 PHP 版本,因此为了便于移植鼓励总是指定恰当的标记。如果是操作纯文本文件并在脚本中使用了 \n 作为行结束符,但还要期望这些文件可以被其它应用程序例如 Notepad 读取,则在 mode 中使用 't'。在所有其它情况下使用 'b'。 

在操作二进制文件时如果没有指定 'b' 标记,可能会碰到一些奇怪的问题,包括坏掉的图片文件以及关于 \r\n 字符的奇怪问题。 

2)fwrite — 写入文件(可安全用于二进制文件)

int fwrite ( resource $handle , string $string [, int $length ] )
对handle所指向的文件进行写入数据,length为设置数据的字节数,当达到length长度后就停止写入。

fwrite($mh,'写入的内容']."\n");//2.指向刚创建的文件,

3)fgetcsv— 从文件指针中读取一行并解析CSV字段

CSV即为逗号分隔值文件格式;

当文件出错或借书会返回FALSE;

每当读完当前行,指针会跳转到下一行的开头;

print_r(fgetcsv($mh));//获取当前行文件,并将指针指向下一行
print_r(fgetcsv($mh));//获取当前行文件,并将指针指向下一行
print_r(fgetcsv($mh));//获取当前行文件,并将指针指向下一行
print_r(fgetcsv($mh));//获取当前行文件,并将指针指向下一行

4)fclose — 关闭一个已打开的文件指针

fclose('$mh');//3.关闭上面的$mh

2.留言本发布功能

1)创建一个HTML网页页面写入表单

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="../../li1/inclide.php" method="post">//将内容提交到inclide.php文件中
	标题:
	<input type="text" name="title"><br>
	内容:
	<textarea name ="mahuan" rows="21" cols="30"></textarea>
	<input type="submit" value="提交">
	</form>
        <h3><a href='./include.html'>发布留言</a></h3>
        <h3><a href='./include.html'>查询留言</a></h3>
</body>
</html>

结果图:


a.txt文件中当前为空。

2)在inclide.php文件中打开本地文件,并且写入内容。
<?php
header('Content-type: text/html; charset=GBK'); 
$fh=fopen('F:\\a.txt', 'a');//打开文件a.txt
//写入内容<pre name="code" class="php">//$_POST获取表单name为title的数据和name为mahaun的数据存入$mh所指向的文件
<p>fwrite($mh,$_POST['title'].','.$_POST['mahuan']."\n");//关闭资源fclose($mh);echo '留言成功';?></p>
 

写入留言前

写入留言后:

到此已经实现留言板的输入功能!

3.留言板的读取功能

1)在inclide.php文件中打开本地文件,并且获取所有留言。

<?php
$fh= fopen('F:\\a.txt','r');
$tid=1;
echo '<table border="1">';
while (($ss=fgetcsv($fh))!=false){	//利用while循环
	echo '<tr>';
		echo '<td><a href="'.'./13-1.php?tid='.$tid.'">'.$ss[0].'</a></td>';//跳转到13-1.php文件
		echo '<td>'.$ss[1].'</td></tr>';
	$tid+=1;
}
	echo '</table>';
echo "<h3><a href='./include.html'>发布留言</a></h3>";
echo "<h3><a href='./13.php'>查询留言</a></h3>";
?>

结果图:


2)当点击每条留言显示出单条留言

<?php
 

$fh= fopen('F:\\a.txt','r');
$hq=$_GET['tid'];
$num = 1;
while (($ss=fgetcsv($fh))!=false){//while循环
	if($num==$hq){
		//print_f($ss);
		echo '<h1>'.$ss[0].'<h1>';//输出单条留言
		echo '<h1>'.$ss[1].'<h1>';
	}
	$num+=1;
}
echo "<h3><a href='./include.html'>发布留言</a></h3>";
echo "<h3><a href='./13.php'>查询留言</a></h3>";
?>



结果图:


总结:学习是无止境的,充实自己。



 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值