MENU

留言板

• May 21, 2018 • Read: 151 • Code

数组的综合运用,实现留言板这个Demo

serialize:一个描述 PHP 数据的函数。返回值是一个字符串。有的时候为了把一些数据转为字符串存起来,但是希望保持数据原来有结构和内容。就要用到这个函数。

serialize($str):序列号字符串
unserialize($str):反序列号

strip_tags():该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。它使用与函数 fgetss() 一样的机制去除标记,防注入攻击

file_get_contents($filename):得到文件中的内容,返回字符串
file_put_contents($filename):向指定文件写内容,如果文件不存在会创建

array_push( array &$array , mixed $value1 [, mixed $... ] ):将一个或多个单元压入数组的末尾(入栈)

 

<?php
header('content-type:text/html;charset:utf-8');
date_default_timezone_set('PRC');
$filename = 'msg.txt';
//检测文件是否存在
$msgs = [];
if(file_exists($filename)){
  //读取文件中的内容
  $string = file_get_contents($filename);
  if(strlen($string)>0){
    $msgs = unserialize($string);
  }
}
//检测用户是否点了提交按钮
if(isset($_POST['pubMsg'])){
  $username = $_POST['username'];
  $title = strip_tags($_POST['title']);//过滤html标记,防止注入攻击
  $content = strip_tags($_POST['content']);
  $time = date("Y-m-d H:i:s");
  //将其组成关联数组
  $data = compact('username', 'title', 'content', 'time');
  array_push($msgs, $data);
  $msgs = serialize($msgs);
  file_put_contents($filename, $msgs);
  if(file_put_contents($filename, $msgs)){
    echo "<script>alert('留言成功!');location.href='22-msg.php';</script>";
  }else{
    echo "<script>alert('留言失败!');location.href='22-msg.php';</script>";
  }
}
/*
这里保存成索引加关联的数组
file_get_contents($filename):得到文件中的内容,返回字符串
file_put_contents($filename):向指定文件写内容,如果文件不存在会创建
serialize($str):序列号字符串
unserialize($str):反序列号
 */
//print_r($msgs);
?>
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <script type="text/javascript" src="https://www.francescomalagrino.com/BootstrapPageGenerator/3/js/jquery-2.0.0.min.js"></script>
    <script type="text/javascript" src="https://www.francescomalagrino.com/BootstrapPageGenerator/3/js/jquery-ui"></script>
    <link href="http://www.francescomalagrino.com/BootstrapPageGenerator/3/css/bootstrap-combined.min.css" rel="stylesheet" media="screen">
    <script type="text/javascript" src="https://www.francescomalagrino.com/BootstrapPageGenerator/3/js/bootstrap.min.js"></script><title></title>
  </head>
  <body>
    <div class="container-fluid">
    	<div class="row-fluid">
    		<div class="span12">
    			<h3>
    				chunlai's blog留言板-v1.0
    			</h3>
    			<div class="hero-unit">
    				<h1>
    					Hello, world!
    				</h1>
    				<p>
    					<a class="btn btn-primary btn-large" href="#">参看更多 »</a>
    				</p>
    			</div>
          <?php if(is_array($msgs)&&count($msgs)): ?>
    			<table class="table">
    				<thead>
    					<tr>
    						<th>
    							编号
    						</th>
    						<th>
    							用户名
    						</th>
    						<th>
    							标题
    						</th>
    						<th>
    						  时间
    						</th>
                <th>
                  内容
                </th>
    					</tr>
    				</thead>
    				<tbody>
    					<?php $i = 1;foreach($msgs as $val): ?>
                <tr class="success">
      						<td>
      						  <?php echo $i++; ?>
      						</td>
      						<td>
      				      <?php echo $val['username']; ?>
      						</td>
      						<td>
      							<?php echo $val['title']; ?>
      						</td>
      						<td>
      							<?php echo $val['time']; ?>
      						</td>
                  <td>
      							<?php echo $val['content']; ?>
      						</td>
      					</tr>
              <?php endforeach; ?>
    				</tbody>
    			</table>
          <?php endif; ?>
    			<form action="#" method="post">
    				<fieldset>
    					 <legend>请留言</legend>
               <label>用户名</label><input type="text" name="username" required />
               <label>标题</label><input type="text" name="title" required />
               <label>内容</label><textarea name="content" rows="5" cols="30" required></textarea><br />
               <button type="submit" class="btn btn-primary btn-large" name="pubMsg" value="发布留言">提交</button>
    				</fieldset>
    			</form>
    		</div>
    	</div>
    </div>
  </body>
</html>

效果如下:

Leave a Comment

2 Comments
  1. J J

    这个是数据库连接了的吗?(竟然又有烟花效果了,,,和原来的那个好像不一样,这个更好看诶)

    1. @J没有用到数据库,就用数组写了个,感觉最近学进度好慢