⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 5.3.php.htm

📁 php5的最新帮助文档
💻 HTM
📖 第 1 页 / 共 2 页
字号:

tail: 显示文件最后数行的资料,默认值为十行,可使用减号加数字,修改要显示的行数。<p>

下面为送出及处理留言字符串的程序,程序用到 env.inc 的文件。<p>

<div align=center><table border=1 bgcolor=ffe0e0><tr><td>
<font color="#000000">
<font color="#0000BB">&lt;?php<br></font><font color="#FF8000">//&nbsp;文件名:&nbsp;post.php<br></font><font color="#007700">require(</font><font color="#DD0000">"env.inc"</font><font color="#007700">);<br>if&nbsp;((</font><font color="#0000BB">$chatuser</font><font color="#007700">!=</font><font color="#DD0000">""</font><font color="#007700">)&nbsp;and&nbsp;(</font><font color="#0000BB">$chattext</font><font color="#007700">!=</font><font color="#DD0000">""</font><font color="#007700">))&nbsp;{<br>&nbsp;&nbsp;</font><font color="#0000BB">$chatstr</font><font color="#007700">=</font><font color="#DD0000">"&lt;font&nbsp;color=8080ff&gt;"</font><font color="#007700">.</font><font color="#0000BB">date</font><font color="#007700">(</font><font color="#DD0000">"h:i:s"</font><font color="#007700">).</font><font color="#DD0000">"&lt;/font&gt;-&lt;font&nbsp;color=ff8080&gt;"</font><font color="#007700">.</font><font color="#0000BB">$chatuser</font><font color="#007700">.</font><font color="#DD0000">"&lt;/font&gt;:&nbsp;"</font><font color="#007700">.</font><font color="#0000BB">$chattext</font><font color="#007700">;<br>&nbsp;&nbsp;</font><font color="#0000BB">$cmdstr</font><font color="#007700">=</font><font color="#DD0000">"echo&nbsp;\""</font><font color="#007700">.</font><font color="#0000BB">$chatstr</font><font color="#007700">.</font><font color="#DD0000">"\"&nbsp;&gt;&gt;&nbsp;"</font><font color="#007700">.</font><font color="#0000BB">$chatfile</font><font color="#007700">;<br>&nbsp;&nbsp;if&nbsp;(!</font><font color="#0000BB">file_exists</font><font color="#007700">(</font><font color="#0000BB">$chatfile</font><font color="#007700">))&nbsp;</font><font color="#0000BB">passthru</font><font color="#007700">(</font><font color="#DD0000">"touch&nbsp;"</font><font color="#007700">.</font><font color="#0000BB">$chatfile</font><font color="#007700">);<br>&nbsp;&nbsp;</font><font color="#0000BB">passthru</font><font color="#007700">(</font><font color="#0000BB">$cmdstr</font><font color="#007700">);<br>}<br></font><font color="#0000BB">?&gt;</font>&lt;html&gt;<br>&lt;body&nbsp;bgcolor=ffffff&nbsp;leftmargin=0&nbsp;topmargin=0&nbsp;marginheight=0&nbsp;marginwidth=0&gt;<br>&lt;form&nbsp;action=<font color="#0000BB">&lt;?&nbsp;</font><font color="#007700">echo&nbsp;</font><font color="#0000BB">$PHP_SELF</font><font color="#007700">;&nbsp;</font><font color="#0000BB">?&gt;</font>&nbsp;method=post&gt;<br>&lt;table&nbsp;border=0&nbsp;width=100%&gt;&lt;tr&gt;<br>&lt;td&nbsp;align=right&gt;匿称:&lt;/td&gt;<br>&lt;td&gt;&lt;input&nbsp;type=text&nbsp;name=chatuser&nbsp;size=8&nbsp;value="<font color="#0000BB">&lt;?&nbsp;</font><font color="#007700">echo&nbsp;</font><font color="#0000BB">$chatuser</font><font color="#007700">;&nbsp;</font><font color="#0000BB">?&gt;</font>"&gt;&lt;/td&gt;<br>&lt;td&nbsp;align=right&gt;发言:&lt;/td&gt;<br>&lt;td&gt;&lt;input&nbsp;type=text&nbsp;name=chattext&nbsp;size=30&nbsp;maxlength=500&gt;&lt;/td&gt;<br>&lt;td&gt;&lt;div&nbsp;align=right&gt;&lt;input&nbsp;type=submit&nbsp;value="送出"&gt;&lt;/td&gt;<br>&lt;/tr&gt;&lt;/table&gt;<br>&lt;/form&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;<br></font>
</td></tr></table></div><p>

程序先检查是否有输入字符串,若无匿名及发言内容字符串则显示发言的表单 (Form),如果资料则将字符串及当时时间存入文件中 (利用 UNIX 的转向指令)。当然,为了防止错误,先检查是否有文件可存文件,若没有则先 touch 该文件,例中的文件就是 /tmp/abc。<p>

<div align=center><table border=1 bgcolor=ffe0e0><tr><td>
<font color="#000000">
&lt;html&gt;<br>&lt;meta&nbsp;http-equiv="Refresh"&nbsp;content="5;&nbsp;url=<font color="#0000BB">&lt;?&nbsp;</font><font color="#007700">echo&nbsp;</font><font color="#0000BB">$PHP_SELF</font><font color="#007700">;&nbsp;</font><font color="#0000BB">?&gt;</font>"&gt;<br>&lt;meta&nbsp;content="text/html;&nbsp;charset=gb2312"&nbsp;http-equiv=Content-Type&gt;<br>&lt;body&nbsp;bgcolor=ffffff&nbsp;leftmargin=0&nbsp;topmargin=0&nbsp;marginheight=0&nbsp;marginwidth=0&gt;<br><font color="#0000BB">&lt;?<br></font><font color="#FF8000">//&nbsp;文件名:&nbsp;list.php<br></font><font color="#007700">require(</font><font color="#DD0000">"env.inc"</font><font color="#007700">);<br><br>if&nbsp;(!</font><font color="#0000BB">file_exists</font><font color="#007700">(</font><font color="#0000BB">$chatfile</font><font color="#007700">))&nbsp;{<br>&nbsp;&nbsp;echo&nbsp;</font><font color="#DD0000">"尚未开张&lt;/body&gt;&lt;/html&gt;"</font><font color="#007700">;<br>&nbsp;&nbsp;exit;<br>}<br><br></font><font color="#0000BB">$uniqfile</font><font color="#007700">=</font><font color="#0000BB">$tempdir</font><font color="#007700">.</font><font color="#0000BB">uniqid</font><font color="#007700">(</font><font color="#0000BB">rand</font><font color="#007700">());<br></font><font color="#0000BB">$shellcmd</font><font color="#007700">=</font><font color="#DD0000">"/usr/bin/tail&nbsp;-50&nbsp;"</font><font color="#007700">.</font><font color="#0000BB">$chatfile</font><font color="#007700">.&nbsp;</font><font color="#DD0000">"&nbsp;&gt;&nbsp;"</font><font color="#007700">.</font><font color="#0000BB">$uniqfile</font><font color="#007700">;<br></font><font color="#0000BB">passthru</font><font color="#007700">(</font><font color="#0000BB">$shellcmd</font><font color="#007700">);<br></font><font color="#0000BB">$chatfilearray</font><font color="#007700">=</font><font color="#0000BB">file</font><font color="#007700">(</font><font color="#0000BB">$uniqfile</font><font color="#007700">);<br></font><font color="#0000BB">$j</font><font color="#007700">=</font><font color="#0000BB">count</font><font color="#007700">(</font><font color="#0000BB">$chatfilearray</font><font color="#007700">);<br>for&nbsp;(</font><font color="#0000BB">$i</font><font color="#007700">=</font><font color="#0000BB">1</font><font color="#007700">;&nbsp;</font><font color="#0000BB">$i</font><font color="#007700">&lt;=</font><font color="#0000BB">$j</font><font color="#007700">;&nbsp;</font><font color="#0000BB">$i</font><font color="#007700">++)&nbsp;{<br>&nbsp;&nbsp;echo&nbsp;</font><font color="#0000BB">$chatfilearray</font><font color="#007700">[</font><font color="#0000BB">$j</font><font color="#007700">-</font><font color="#0000BB">$i</font><font color="#007700">].</font><font color="#DD0000">"&lt;br&gt;\n"</font><font color="#007700">;<br>}<br></font><font color="#0000BB">unlink</font><font color="#007700">(</font><font color="#0000BB">$uniqfile</font><font color="#007700">);<br></font><font color="#0000BB">?&gt;<br></font>&lt;/body&gt;<br>&lt;/html&gt;<br></font>
</td></tr></table></div><p>

上面的程序就是使用 Client Pull 的技术,每五秒就重新更新一次。同样地,它也 require 共用的 env.inc 文件,要改变其中的变量时,马上就可以让所有的程序用到,这对开发网站来说,是蛮重要的方法,可以将网页程序中都会出现的地方。例如 Copyright (C) 1996-2000 的字符串,放在一个文件上,到了新的一年,只要改一个文件,整个站都改了。<p>

<font color="#007700">if&nbsp;(!</font><font color="#0000BB">file_exists</font><font color="#007700">(</font><font color="#0000BB">$chatfile</font><font color="#007700">))&nbsp;{<br>
&nbsp;&nbsp;echo&nbsp;</font><font color="#DD0000">"尚未开张&lt;/body&gt;&lt;/html&gt;"</font><font color="#007700">;<br>
&nbsp;&nbsp;exit;<br>
}</font><p>
<font color="#0000BB">$uniqfile</font><font color="#007700">=</font><font color="#0000BB">$tempdir</font><font color="#007700">.</font><font color="#0000BB">uniqid</font><font color="#007700">(</font><font color="#0000BB">rand</font><font color="#007700">());</font><br>
<font color="#0000BB">$shellcmd</font><font color="#007700">=</font><font color="#DD0000">"/usr/bin/tail&nbsp;-50&nbsp;"</font><font color="#007700">.</font><font color="#0000BB">$chatfile</font><font color="#007700">.&nbsp;</font><font color="#DD0000">"&nbsp;&gt;&nbsp;"</font><font color="#007700">.</font><font color="#0000BB">$uniqfile</font><font color="#007700">;</font><br>
<font color="#0000BB">passthru</font><font color="#007700">(</font><font color="#0000BB">$shellcmd</font><font color="#007700">);</font><p>

程序先检查有没有用户发送聊天内容的文件 /tmp/abc,若没有就显示尚未开张,等用户送聊天内容。若已有聊天资料,就抓出最后五十笔,在在另外的文件中准备显示。<p>

<font color="#0000BB">$chatfilearray</font><font color="#007700">=</font><font color="#0000BB">file</font><font color="#007700">(</font><font color="#0000BB">$uniqfile</font><font color="#007700">);</font><br>
<font color="#0000BB">$j</font><font color="#007700">=</font><font color="#0000BB">count</font><font color="#007700">(</font><font color="#0000BB">$chatfilearray</font><font color="#007700">);<br>
for&nbsp;(</font><font color="#0000BB">$i</font><font color="#007700">=</font><font color="#0000BB">1</font><font color="#007700">;&nbsp;</font><font color="#0000BB">$i</font><font color="#007700">&lt;=</font><font color="#0000BB">$j</font><font color="#007700">;&nbsp;</font><font color="#0000BB">$i</font><font color="#007700">++)&nbsp;{<br>
&nbsp;&nbsp;echo&nbsp;</font><font color="#0000BB">$chatfilearray</font><font color="#007700">[</font><font color="#0000BB">$j</font><font color="#007700">-</font><font color="#0000BB">$i</font><font color="#007700">].</font><font color="#DD0000">"&lt;br&gt;\n"</font><font color="#007700">;<br>
}<br>
</font><font color="#0000BB">unlink</font><font color="#007700">(</font><font color="#0000BB">$uniqfile</font><font color="#007700">);</font><p>

将文件读入数组变量 $chatfilearray 中,并以最后的资料最先显示的方式送给浏览器端,当然可以使用对数组排序的方法,但确定一定时最后存入的资料在最后面,将它排序实在很浪费 CPU 时间,因此就从最后 echo 到最前面的资料。使用完成还要用 <a href="function.php-unlink.htm" alt="function.php?unlink">unlink()</a> 指令,将临时文件杀掉。<p>

这样就完成了最粗糙的聊天室系统,当然还有很多改进的空间,例如统计使用人数、调用个人....等,就要 Webmaster 再精雕细琢了。

<p><hr size=1><br>如果你对此手册有任何问题,请到下面网址提问:&nbsp;<a href="www.web745.com">WEB开发知识库</a>&nbsp;(<a href="http://www.web745.com">www.web745.com</a>)<p>
</td></tr></table></div>
<p>
<div align=center>
  <table border=0>
    <tr>
      <td>[ <a href="5.2.php.htm" alt="5.2.php">上一页</a> 
      </td>
      <td> <a href="5.4.php.htm" alt="5.4.php">下一页</a> 
        ]</td>
    </tr>
  </table>
</div><p><br><br>

</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -