2-12留言板的问题

2-12留言板的问题

<?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'])){
$suername = $_POST['username'];
$title = strip_tags($_POST['title']);
$content = strip_tags($_POST['content']);
$time = time();

$data = compact('username','title','content','time');
array_push($msgs,$data);
$msgs=serialize($msgs);
if(file_put_contents($filename,$msgs)){
echo "<script>alert('留言成功!');location.href='webpage.php';</script>";
}else{
echo "<script>alert('留言失败!');location.href='webpage.php';</script>";
}
}

?>
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://www.francescomalagrino.com/BootstrapPageGenerator/3/js/jquery-2.0.0.min.js"></script>
<script type="text/javascript" src="http://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="http://www.francescomalagrino.com/BootstrapPageGenerator/3/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container-fluid">
<div class="row-fluid">
<div class="span12">
<div class="page-header">
<h1>
U.D.G留言板-<span>1.0版本</span>
</h1>
</div>
<div class="hero-unit">
<h1>
Hello, world!
</h1>
<p>
这是一个可视化布局模板, 你可以点击模板里的文字进行修改, 也可以通过点击弹出的编辑框进行富文本修改. 拖动区块能实现排序.
</p>
<p>
<a rel="nofollow" class="btn btn-primary btn-large" href="#">参看更多 »</a>
</p>
</div>
<?php if(is_array($msgs) && count($msgs)>0):?>
<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 date("m/d/y H:i:s",$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>
<hr>
<input type="submit" class="btn btn-primary btn-lg" name="pubMsg" value="发布留言"/>
</fieldset>
</form>
</div>
</div>
</div>
</body>
</html>

老师我的代码如上,在页面中打开的时候用户名那一栏会出错,请老师帮我看一下。

还有一个问题是,为什么<?php echo $val['title'];?>这行代码可以输出title的内容,好像并没有定义$val这个数组呀?请老师解释一下这行代码

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

您好,如下图所示,添加留言时用户名写错了,造成留言数据里并没有username这个字段,所以报username未定义。

http://img1.sycdn.imooc.com//climg/5a13cb84000138e704290123.jpg

另外$val是通过foreach遍历数组$msgs而来的,$msgs是一个二维数组,遍历之后得到的$val是一维数组,代表着一条留言数据。如果解决了您的问题,请采纳,祝学习愉快~

  • 会飞的鱼鱼鱼 提问者 #1
    老师,我把$suername改回$username后还是有错误,页面提示 Notice: Undefined index: username in D:\wamp\www\muke\webpage.php on line 85,什么原因呢?
    2017-11-21 17:08:25
  • imooc_澈 回复 提问者 会飞的鱼鱼鱼 #2
    那是因为msg.txt保留着原来的数据,原来的数据没有username这个字段,你试试新添加的数据就不会报这个错了,把原来的msg.txt文件清空或者删除重来就没有问题。
    2017-11-21 19:00:51
隔壁班的黄同学 2017-12-20 23:47:00

帮大忙了同学

提问者 会飞的鱼鱼鱼 2017-11-21 16:57:00

谢谢老师.  

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师