v70w70 发表于 2022-1-8 17:05:40

PHP接收数据小系统之前展示数据(一)-一下思路

在写代码之前做个自我介绍。. .

大家好,我叫燕子天外神坛,就叫我燕子吧。

做一个简单的PHP消息系统。

环境:PHP5.3++MySQL

当地的:

开发工具:Zend 11.0.2

知识点:PHP如何接收数据、序列化和反序列化操作等。

OK,在做这么小的系统之前,先理清思路。

做前端页面(显示数据)。后端接受数据并存储优化系统1.以制作简单的首页。

创建一个新文件并将其命名为“index.php”。这里就不讲制作过程了(也真的没什么好讲的)。主要是HTML的一些知识,基本是这样的:(里面的数据是可选的)

http://tt.ccoox.cn/data/attachment/forum/20220108/1641632740941_0.jpg

既然我们主要讲PHP(毕竟前端不是强项)php留言板系统,还是把前端页面简单点比较好。

直接粘贴代码:

<p><pre>    <code class="language-text">    <!doctype html>
    <html lang="en">
    <head>
            <meta charset="UTF-8" />
            <title>留言页表页</title>
    </head>
    <body>
    <div align="center">
            <h2 align="center">留言页表页 - 继续添加</h2>
            <table bgcolor="#0080ff" border="1" width="80%" auto="0">
               <tr>
                       <td>编号</td>
                       <td>标题</td>
                       <td>内容</td>
                       <td>留言者</td>
                       <td>发布时间</td>
                       <td>心情</td>
               </tr>
               <tr>
                       <td>1</td>
                       <td>1111</td>
                       <td>11111111111</td>
                       <td>1</td>
                       <td>2017-10-02 09:10:51</td>
                       <td>https://tt.ccoox.cn/img/face.png</td>
               </tr>
</code></pre></p>
现在,制作另一个添加页面并将其命名为“.php”。效果和代码如下:

<p><pre>    <code class="language-text"><!doctype html>
<html lang="en">
<head>
        <meta charset="UTF-8" />
        <title>添加留言页</title>
</head>
<body>
<div align="center">
        <h2>添加留言</h2>
        <form action="doAction.php" method="get">
        <input type="hidden" name="act" value="add"/>
             <table border="1" bgcolor="#0080ff" width ="80%">
             <tr>
                     <td>发表人</td>
                     <td><input type="text" name="username" placholder="请输入昵称" id="username"/></td>
             </tr>             <tr>
                     <td>标题</td>
                     <td><input type="text" name="title" placholder="请输入昵称" id="titlie"/></td>
             </tr>
             <tr>
                     <td>内容</td>
                     <td><textarea name="content" id="" cols="45" rows="10"></textarea></td>
             </tr>
             <tr>
                     <td>心情</td>
                     <td><input type="radio" name="xinqing" value="face.png" checked="checked"/>https://tt.ccoox.cn/img/face.png
                <input type="radio" name="xinqing" value="face.png"/>https://tt.ccoox.cn/img/face.png
                     <input type="radio" name="xinqing" value="face.png"/>https://tt.ccoox.cn/img/face.png
                     <input type="radio" name="xinqing" value="face.png"/>https://tt.ccoox.cn/img/face.png
                     <input type="radio" name="xinqing" value="face.png"/>https://tt.ccoox.cn/img/face.png
              </tr>
              <tr>
                <td colspan="2"><input type="submit" value="发表"/></td>
              </tr>
             </table>
        </form>
</div>
</body>
</html></code></pre></p>
2.接收存储的数据并显示在前端。

创建一个名为“.php”的新文件来接收和保存数据。

注意!这时候就需要在添加页面(“.php”)中为要传递的数据添加name属性。喜欢

<p><pre>    <code class="language-text"><input type="text" name="title" placholder="请输入昵称"></input></code></pre></p>
并将表单中的提交方法设置为“GET”:

<p><pre>    <code class="language-text"><form action="doAction.php" method="get"></code></pre></p>
接下来,在“.php”中编写代码。

使用$_GET方法接收传过来的数据,并加一个isset判断:如果数据没有传过来,就给一个空值,如:

<p><pre>    <code class="language-text">$username = isset($_GET[&#39;username&#39;])?$_GET[&#39;username&#39;]:&#39;&#39;;</code></pre></p>
将接收到的数据存储在一个二维数组中:

<p><pre>    <code class="language-text">$arr[] = array(
      &#39;username&#39;=>$username,
      &#39;title&#39;=>$title,
      &#39;content&#39;=>$content,
      &#39;xinqing&#39;=>$xinqing,
      &#39;time&#39;=>$time
      );</code></pre></p>
序列化一个二维数组:

<p><pre>    <code class="language-text">$arr = serialize($arr);//序列化</code></pre></p>
将序列化数据存储在名为“Data.txt”的文件中,例如:

<p><pre>    <code class="language-text">$filename=&#39;Data.txt&#39;;
if(file_put_contents($filename, $arr)){
    echo &#39;添加留言成功<br />&#39;.&#39;继续添加|&#39;.&#39;查看留言|&#39;;
}else {
    echo &#39;添加留言失败&#39;;
}</code></pre></p>
前端显示:

这时候需要在“index.php”中添加几行代码:

1.读取代码:让前端读取数据:(把这段代码加到前面)

<p><pre>    <code class="language-text"><?php
    $filename = &#39;Data.txt&#39;;
    if (file_exists($filename)&&filesize($filename)>0){
      $str = file_get_contents($filename);//取出数据
      $userInfo = unserialize($str);//反序列化
    }
?></code></pre></p>
2.显示代码:遍历二维数组:(注意:此时应保留table标签的tr标签的第一行):

<p><pre>    <code class="language-text"><table bgcolor="#0080ff" border="1" width="80%" auto="0">
               <tr>
                       <td>编号</td>
                       <td>标题</td>
                       <td>内容</td>
                       <td>留言者</td>
                       <td>发布时间</td>
                       <td>心情</td>
               </tr>
               <?php
                 foreach ($userInfo as $key=>$val){
               ?>
               <tr>
                       <td><?php echo $key+1;?></td>
                       <td><?php echo $val[&#39;title&#39;];?></td>
                       <td><?php echo $val[&#39;content&#39;];?></td>
                       <td><?php echo $val[&#39;username&#39;];?></td>
                       <td><?php echo $val[&#39;time&#39;];?></td>
                       <td>https://tt.ccoox.cn/"alt="" /></td>
               </tr>
                 <?php
               }?>
            </table></code></pre></p>
这样前端就可以读取和显示数据了!

3.一些小优化

1.为了防止恶意请求占用系统空间,我们需要对系统进行优化:

向表单标签添加一个按钮php留言板系统,如下所示:

<p><pre>    <code class="language-text"><input type="hidden" name="act" value="add"/></code></pre></p>
在“.php”中添加if判断:

<p><pre>    <code class="language-text">    if ($act==&#39;add&#39;){//存入数据
      $arr[] = array(
      &#39;username&#39;=>$username,
      &#39;title&#39;=>$title,
      &#39;content&#39;=>$content,
      &#39;xinqing&#39;=>$xinqing,
      &#39;time&#39;=>$time
      );
    }</code></pre></p>
这段代码的目的是防止恶意请求占用系统空间。这样,只需要判断值是否通过即可。

2.修复一个小bug:这个小bug是所有数据只能存储一次。如果有新数据进来,它将被覆盖。为了解决这个问题,可以加一个if判断:

<p><pre>    <code class="language-text">if (file_exists($filename)&&filesize($filename)>0){
      //取出数据
      $str = file_get_contents($filename);
      //反序列化
      $arr = unserialize($str);
    }</code></pre></p>
这个判断的目的是判断文件是否已经存在。如果存在,则取出文件中的数据反序列化成二维数组,将新数据一起序列化到文件中,避免新数据覆盖旧数据。.

好了,现在一个简单的 PHP 消息系统就完成了。
页: [1]
查看完整版本: PHP接收数据小系统之前展示数据(一)-一下思路