本例以Dreamweaver为设计工具,运用Dreamweaver服务器行为的功能,构建一个php+mysql的留言本。
准备
运行环境:AppServ 2.5.9
在appserv网页文件目录www下建立tut目录,tut下建立guestbook目录,留言本相关文件均存放在guestbook下。新建Dreamweaver站点,以tut作为站点根目录。当然,您可以根据自己的习惯建立目录和站点。
用phpmyadmin建立数据库:tut,数据库连接用户:root,密码:hello,您可以自行修改适合您的服务器配置。
在tut库中新建数据表:guestbook,数据表结构如下:
Read more
15 Days of jquery第11天介绍了用jquery实现多文件上传,我把代码改了一下,用jquery动态添加和删除表单元素。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script src="js/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
var spotMax = 3;
if($('div.spot').size() >= spotMax) {$(obj).hide();}
$("input#add").click(function(){ addSpot(this, spotMax);
});
});
function addSpot(obj, sm) {
$('div#spots').append(
'<div class="spot">' +
'<input type="text" name="spot_title" /> ' +
'<input type="text" name="spot_addr" /> ' +
'<input type="text" name="spot_url" /> ' +
'<input type="button" class="remove" value="Delete" /></div>')
.find("input.remove").click(function(){
$(this).parent().remove();
$('input#add').show();
});
if($('div.spot').size() >= sm) {$(obj).hide();}
};
</script>
</head>
<body>
<form action="test.php" method="post" name="asdf" id="asdf">
<div id="spots">
<input type="button" id="add" name="add" value="add" /><br />
</div>
<input type="button" name="Submit" value="Submit" id="send" />
</form>
<script>
$('#send').click(function(){
alert('Demonstration Only: submit disabled');
});
</script>
</body>
</html>
GAE目前还不允许用户操作文件系统,上传的图片只能通过数据库存取。以下的代码实现了shop表中logo图片的动态显示:
class showShopLogo(webapp.RequestHandler):
def get(self):
shopid = self.request.get('sid')
shop = Shop.get_by_id(int(shopid))
if (shop and shop.logo):
img = images.Image(shop.logo)
img.resize(width=128, height=128)
tumbimg = img.execute_transforms(output_encoding=images.PNG)
self.response.headers['Content-Type'] = 'image/png'
self.response.out.write(tumbimg)
else:
self.redirect('/images/nologo.png')
定义处理路径:
application = webapp.WSGIApplication(
[ ...
('/shop/logo', showShopLogo),
( ...)
], debug=True)
wsgiref.handlers.CGIHandler().run(application)
我们可以通过http://example.com/shop/logo?sid=5这样的格式访问图片,在模板文件中,用<img src=”/shop/logo?sid={{shop.key.id}}” />实现图片的显示。
有时,我们完成的网页浏览时发生“Warning: session_start(): Cannot send session cookie - headers already sent by (output started at…”的错误。一般的原因是在运行session_start()时,之前已经有实际的html内容输出了,只要将session_start ()的调用移到网页开头部分就能解决。
但是,在Dreamweaver设计中,产生这一问题往往不是上述原因,DW自动产生的代码不会犯如此低级的错误。通常是由于文件UTF-8格式转换或使用网上下载的网页、模板时,文件开始处被插入BOM(Byte Order Mark,字节序标记),正是这个BOM影响到了session的正常运行。
解决的办法也很简单,只要用Ultraedit打开文件,执行另存为,保存时选择“UTF-8 无BOM”即可。如问题依旧,检查session_start函数前的不同PHP代码块之间是否有空行,一般将空行删除即可。
<?php require_once(’Connections/conn.php‘); ?>
(空行删除)
<?php
if (!isset($_SESSION)) {
session_start();
}
…
另外,header转发也有可能产生此类问题,比如:header(sprintf(”Location:%s”,$insertGoTo)),也可以用以上方法解决。