Submitted by aming on 2008, March 10, 7:35 PM
提到Web浏览器,大多数人都会想到无处不在的Microsoft Internet Explorer,直到最近像Firefox、Safari和Opera之类的浏览器日益兴起,这种情况才稍有改观。许多新手可能会误认为IE是市场上的第一个浏览器,其实不然。实际上,第一个Web浏览器出自Berners-Lee之手,这是他为NeXT计算机创建的(这个Web浏览器原来取名叫WorldWideWeb,后来改名为Nexus),并在1990年发布给CERN的人员使用。Berners-Lee和Jean-Francois Groff将WorldWideWeb移植到C,并把这个浏览器改名为libwww。20世纪90年代初出现了许多浏览器,包括Nicola Pellow编写的行模式浏览器(这个浏览器允许任何系统的用户都能访问Internet,从Unix到Microsoft DOS都涵盖在内),还有Samba,这是第一个面向Macintosh的浏览器。
1993年2月,伊利诺伊大学Urbana-Champaign分校美国国家超级计算应用中心的Marc Andreessen和Eric Bina发布了Unix版本的Mosaic。几个月之后,Aleks Totic发布了Mosaic的Macintosh版本,这使得Mosaic成为第一个跨平台浏览器,它很快得到普及,并成为最流行的Web浏览器。这项技术后来卖给了Spyglass,最后又归入Microsoft的门下,并应用在Internet Explorer中。
1993年,堪萨斯大学的开发人员编写了一个基于文本的浏览器,叫做Lynx,它成为了字符终端的标准。1994年,挪威奥斯陆的一个小组开发了Opera,到1996年这个浏览器得到了广泛使用。1994年12月,Netscape发布了Mozilla的1.0版,第一个盈利性质的浏览器从此诞生。2002年又发布了一个开源的版本,这最终发展为2004年11月发布的、现在十分流行的Firefox浏览器。
当Microsoft发布Windows 95时,IE 1.0是作为Microsoft Plus!包的一部分同时发布的。尽管这个浏览器与操作系统集成在一起,但大多数人还是坚持使用Netscape、Lynx或Opera。IE 2.0有了很大起色,增加了对cookie、安全套接字层(Secure Socket Layer,SSL)和其他新兴标准的支持。2.0版还可以用于Macintosh,从而成为Microsoft的第一个跨平台浏览器。不过,大多数用户还是很执着,仍然坚持使用他们习用的浏览器。
不过到了1996年夏天,Microsoft发布了IE 3.0版。几乎一夜之间,人们纷纷拥向IE。当时,Netscape的浏览器是要收费的,Microsoft则免费提供IE。关于浏览器领域谁主沉浮,因特网社区发生了两极分化,很多人担心Microsoft会像在桌面领域一样,在Web领域也一统天下。有些人则考虑到安全因素——果然不出所料,发布3.0版9天之后就报告了第一个安全问题。但是到1999年发布IE 5时,它已经成为使用最广的浏览器。
Tags: ajax, javascript, php
AJAX | 评论:0
| Trackbacks:0
| 阅读:206
Submitted by aming on 2008, March 10, 7:33 PM
Ajax技术可以提供高度交互的Web应用,给予用户更丰富的页面浏览体验。本书重点介绍Ajax及相关的工具和技术,主要内容包括XMLHttpRequest对象及其属性和方法、发送请求和处理响应、构建完备的Ajax开发工具、使用JsUnit测试JavaScript、分析JavaScript调试工具和技术,以及Ajax开发模式和框架等。本书中所有例子的代码都可以从Apress网站本书主页的源代码(Source Code)免费得到。本书适合各层次Web应用开发人员和网页设计人员阅读。
» 阅读全文
Tags: ajax, javascript, php
AJAX | 评论:0
| Trackbacks:0
| 阅读:291
Submitted by aming on 2008, March 9, 12:22 PM
今天再稍微改善下加一个管理员管理留言的功能~~~这里最主要要用到
$_SESSION['item'] 这个东东~~` 好了`~`先把昨天的稍微改一下 再把这个功能加进去~~~
首先我们在首页同时显示留言,以及留言添加框~~这样使留言者方便使用`~`
不说多了`~把代码贴出来再说:
index.php
<html>
<head>
<meta http-equiv="Content-Type" c>
<title>留言本</title>
</head>
<body>
<a href="admin_login.htm" tagert="_blank">留言管理</a>
<?
$conn=mysql_connect ("localhost:6033", "root", ""); //打开MySQL服务器连接
mysql_select_db("guest_book"); //链接数据库
mysql_query("set names GB2312"); //解决中文乱码问题
$exec="select * from contents"; //sql语句
$result=mysql_query($exec); //执行sql语句,返回结果
while($rs=mysql_fetch_object($result))
{
echo "<table><tr><td>姓名:".$rs->name."</td></tr>";
echo "<tr><td>留言:".$rs->content."</td></tr></table><br/>";
echo ".............................................................................................................................";
}
mysql_close();
?>
<br><br><br>
<form action="updata.php" method="post" name="name1">
姓名:<input type="text" name="user_name"><br>
留言:<textarea name="post_contents" rows="10" cols="50"></textarea>
<input type="submit" value="提交留言">
</form>
</body>
</html>
updata.php页再加个header("location:index.php");语句重定向到主页面`~~
updata.php
<?
$name=$_POST['user_name'];
$content=$_POST['post_contents'];
$conn=mysql_connect("localhost:6033", "root", "");
mysql_query("set names GB2312"); //解决中文乱码问题
mysql_select_db("guest_book");
$exec="insert into contents (name,content) values ('".$_POST['user_name']."','".$_POST['post_contents']."')";
$result=mysql_query($exec);
mysql_close();
header("location:index.php");
?>
HOHO~~~是不是用起来有那么回事了`~~
好的`~下面再加个管理功能 ~~那么这个留言本就更加强大了`~
留言管理模块 分为 管理员登录页admin_login.htm ,管理员验证页admin_check.php 后台管理首页admin_index.php
先农这个登录页面admin_login.htm
<form action="admin_check.php" method="post" name="form2">
用户名:<input type="text" name="admin_name">
密 码:<input type="password" name="admin_password">
<input type="submit" value="进入后台管理">
</form>
这个简单得再简单不过了,我就不说什么了`~~
admin_check.php管理员验证
<?
session_start();
$admin_name=$_POST['admin_name'];
$admin_password=$_POST['admin_password'];
$conn=mysql_connect ("localhost:6033", "root", "");
mysql_select_db("guest_book");
$exec="select * from admin where admin_name='".$admin_name."'";
$result=mysql_query($exec);
if ($rs=mysql_fetch_object($result))
{ if ($rs->admin_password==$admin_password)
{$_SESSION['admin']="OK";
header("location:admin_index.php");
}
else echo"密码不正确";
}
else echo"用户名不正确";
mysql_close();
?>
这里最主要的就是session~~~凡事要用到session的地方.在页面最开始处要加上这一句session_start();否则就无法使用~~那么session究竟是什么东东呢?由于网页的传输方式(也就是http这个东西) 不是永久连接的~~`所以服务器无法在两个不同页面之间传送变量`~~唉.我一下子也说不清楚`~~还是看看这里http://www.chinalinuxpub.com/read.php?wid=87
上面有很详细的介绍.反正就是用这个东西来验证管理员的身分了`~~
好了下面说后台管理主页面admin_index.php
<?
session_start();
if($_SESSION['admin']=="OK")
{
$conn=mysql_connect ("localhost:6033", "root", "");
mysql_select_db("guest_book");
$exec="select * from contents";
$result=mysql_query($exec);
while($rs=mysql_fetch_object($result))
{
echo "<table><tr><td>姓名:".$rs->name."</td></tr>";
echo "<tr><td>留言:".$rs->content."</td></tr></table><br/>";
echo "<a href=modify.php?id=".$rs->id." >修改</a> <a href=delete.php?id=".$rs->id." >删除</a>";
}
echo "<br><br><br><br><br><a href=index.php >回首页</a>";
}
mysql_close();
?>
这里最主要是这一句echo "<a href=modify.php?id=".$rs->id." >修改</a> <a href=delete.php?id=".$rs->id." >删除</a>";
用来向所连接到的地址传递参数~~看看下面的就知道有什么用了
modify.php
<?
session_start();
if($_SESSION['admin']=="OK")
{
$conn=mysql_connect ("localhost:6033", "root", "");
mysql_select_db("guest_book");
$exec="select * from contents where id=".$_GET['id']; /*这里这个$_GET['id']就是取得从那个连接传递过来的参数拉 */
$result=mysql_query($exec);
$rs=mysql_fetch_object($result);
$name=$rs->name;
$content=$rs->content;
$id=$rs->id;
?>
<form action="modify2.php" method="post" name="name1">
ID :<?=$id?><input type=hidden name=id value=<?=$id?> >
姓名:<?=$name?><br>
留言:<textarea name="post_contents" rows="10" cols="50"><?=$content?></textarea>
<input type="submit" value="提交修改">
</form>
<?
}
mysql_close();
?>
这里这个<?=$id> 其实就等于 echo $id
再看看最终的数据修改实现页面modify2.php
<?
session_start();
if($_SESSION['admin']=="OK")
{
$conn=mysql_connect ("localhost:6033", "root", "");
mysql_select_db("guest_book");
$exec="select * from contents where id=".$_GET['id'];
$exec="update contents set content='".$_POST['post_contents']."' where id=".$_POST['id'];
$result=mysql_query($exec);
}
mysql_close();
header("location:admin_index.php");
?>
最后就是删除功能的实现了
delete.php
<?
session_start();
if($_SESSION['admin']=="OK")
{
$conn=mysql_connect ("localhost:6033", "root", "");
mysql_select_db("guest_book");
$exec="delete from contents where id=".$_GET['id'];
mysql_query($exec);
mysql_close();
header("location:admin_index.php");
}
?>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
今天用到的知识如下:
1: session_start(); $_SESSION['变量名']=$变量名 或者 某一特定值
2: <a href="#####.php?var=##">aaa</a>用这个方法来传递参数 同时用 $_GET['var']来接收传递过来的值
3: 数据修改 :$exec="update tablename set item1='".$_POST['item1']."' where ...";
4: 数据删除 :$exec="delete from tablename where...";
Tags: php, 技巧, mysql
PHP | 评论:0
| Trackbacks:0
| 阅读:218
Submitted by aming on 2008, March 9, 12:20 PM
留言本最基本的功能就是:
1:用户写留言
2:把数据写入数据库
3:显示所有留言
» 阅读全文
Tags: php, 技巧, mysql
PHP | 评论:0
| Trackbacks:0
| 阅读:246
Submitted by aming on 2008, March 8, 8:07 PM
post.php 文件
<?php
require('config.php');
?>
<?php
$nikename=$arr_request['nikename'];
if (strlen($nikename)==0)
{
echo "<center>";
echo "<h2><font color=red>错误信息!</font></h2>";
echo "对不起,<font color=red>呢称</font>必须填写!!! 请重填!<br>";
echo "<hr></hr>";
echo "免费留言本由<a href=http://little.oso.com.cn>小熊</a>提供技术支持";
echo "</center>";
exit ;
}
$date_now=date('Y/m/d H:i:s');
$ip_address=getenv("REMOTE_ADDR");
$messageold=$arr_request['message'];
//$pattern="/n/";
//$replacement="<br>";
$message=computer_message($messageold,$hang_zifu_number);
$subjectold=$arr_request['subject'];
if (strlen($subjectold)>$hang_zifu_number)
$subject=computer_message($subjectold,$hang_zifu_number);
else
$subject=$subjectold;
$str_sql=" insert into $table_name
(nikename,subject,date_created,ip_address,message,email_address,zhuye_address,oicq)
values
( '$nikename',
'$subject',
'$date_now',
'$ip_address',
'$message',
'".$arr_request['email_address']."',
'".$arr_request['zhuye_address']."',
'".$arr_request['oicq']."'
)";
$result=mysql_db_query($db_name,$str_sql,$id_link);
if (! $result){
affy_error_exit('SQL Insert Execution has failed.');
}
else
{
echo "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">";
echo "<HTML><HEAD><TITLE>发表文章</TITLE>";
echo "<META content="text/html; charset=gb2312" http-equiv=Content-Type>";
echo "<meta HTTP-EQUIV="REFRESH" CONTENT="2;URL=display.php">";
echo "</head><body topmargin="0"><br>";
echo "<ul>谢谢你发表留言,将自动显示留言内容";
echo " <br>";
echo "<a href=display.php>如果你的浏览器没有自动的返回到留言簿首页,?
请点这里返回.";
echo "</a></ul>";
exit;
}
?>
index.html 文件
<html>
<center>
<title>谢谢你的留言!</title>
<h1><font color=blue>我的留言本</font></h1>
<font color=navy>首先感谢你的留言,你的每一句话我都会仔细阅读!!!</font>
<form action="post.php" method="post">
<table>
<tr>
<td><font color=teal>呢称:</font><font color=red>(不能为空)</font></td><td>
<input type="text" name="nikename" value=""></td>
</tr>
<tr>
<td>OICQ号码:</td><td>
<input type="text" name="oicq" value=""></td>
</tr>
<tr>
<td>e-mail: </td><td>
<input type="text" name="email_address" value="" size="30"></td>
</tr>
<tr>
<td>个人主页:</td><td>
<input type="text" name="zhuye_address" value="http://" size="40"></td>
</tr>
<tr><td>
主题:</td><td>
<input type="text" name="subject" size="40" ></td>
</tr>
<tr><td>
内容:</td><td> </td>
</tr>
<tr><td colspan="2">
<textarea name="message" cols="60" rows="8"></textarea></td>
</tr>
<tr>
<td>
<input type="submit" value="完成留言">
</td>
<td>
<input type="reset" value="重新来过">
</td>
</tr>
</table>
</form>
<p>
<a href=display.php>查看留言</a>
<hr></hr>
免费留言本由<a href="http://little.oso.com.cn" >小熊</a>提供技术支持
</center>
</html>
display.inc文件!!!
<tr bgcolor=>
<td>
<a href=mailto:<?php echo $record->email_address ?> >
<font color="blue" size=4><strong><?php echo $record->nikename ?></strong></font>
</a>
</td>
<td><font color="navy">留言时间:<?php echo $record->date_created ?></font></td>
<td>来自:
<?php
$ip_address=ip_question($record->ip_address);
echo $ip_address;
?>
</td>
</tr>
<tr bgcolor=>
<th colspan=3 align=left>主题:<font color=teal><?php echo $record->subject ?></font></th>
</tr>
<tr><th colspan=3 align=left><font color="#416AAF">
<?php echo $record->message ?></font></th>
</tr>
<?php
if ($record->huifu_biaozi)
{
?>
<tr><th colspan=3 align=left><font color="red"><br><br>版主回复:</font><font color="navy">
<?php echo $record->huifu ?></font></th>
</tr>
<?php
}
?>
<tr>
<th colspan=3 align=left><br>
<a href=mailto:<?php echo $record->email_address ?> >
<img src=image/mail.gif
alt="<?php echo $record->nikename ?>的e-mail地址是:<?php echo $record->email_address ?> "
border="0" width="15" length="15">邮件</a>
<a href=<?php echo $record->zhuye_address ?>><img src=image/home.gif
alt="<?php echo $record->nikename ?>的主页地址是:<?php echo $record->zhuye_address ?> "
border="0"
width="14" length="14" >主页</a>
<img src=image/oicq.gif border="0" alt="<?php echo $record->nikename?>的OICQ是:
<?php echo $record->oicq ?>"
width="14" length="14" >OICQ</a>
<a href=action.php?action=delete&key_liuyan=<?php echo $record->key_liuyan ?>><img src=image/del.gif border="0" width="12" length="12" alt="只有版主才有删除的权限哦!">删除</a>
<a href=action.php?action=huifu&key_liuyan=<?php echo $record->key_liuyan ?> ><img src=image/replay.gif border="0" width="14" length="14" alt="不好意思,现在暂时只有版主才能回复">回复</a>
</th></tr>
<tr>
<td colspan="3"><hr SIZE ="1"></td>
</tr>
Tags: php, 技巧, mysql
PHP | 评论:0
| Trackbacks:0
| 阅读:253
Submitted by aming on 2008, March 8, 8:06 PM
此留言本的优点和缺点:
-------------------------------------------------------------------
这可能是最重要的了.哈哈!!!
优点:
该留言本最大的优点是,换行.实现了用户换行,(保持原形,中国人的同学录的换行是安一定字数的,也就是说不管你的换行,统统都他给你换行.这样要是想贴文本图形的话,就存在问题了.)而现在大部分的留言本都没有实现自动换行,也就是说它不管你一句写多少个字符,它都会在一行显示,这样要是有一个留言没换行的话,留言本就会变的很难看,窗口下面的行条就会好长,,破坏了叶面的美观!!!.
到今天为止,我还没发现能同时解决这两个问题的留言,这也是我写这留言本的原因所在.
包括oso的论坛,也是不换行的,不信你去留言试试,写一条很长的不回车的字符,这样它的叶面马上就出现问题了.(我和oso提过这问题,不知道改了没有!)
我写了个computer_message($msg);的函数解决了这问题,可以看config.php文件中的源玛.
还有分页:通过两种方式来察看,一是:往前,往后显示留言,另一种是:安页数显示.
还有现在版主可以方便的通过下面的连接来删除和恢复,当然要输入密码.
缺点:
当然有了,要实事求是,就是页面的美化工作做的还不是很够,虽然觉的很必要,但由于时间的关系总觉的这是外面的东西,可以先拖一下,当然只要有一点HTML知识的都可以很方便的修改.
还有就是未知的BUG了!哈哈!!!
下载点,和样本在http://little.oso.com.cn中可以找到!!!
因为说明档是在linux下写的,所以要用写字板打开readme.txt
不要用记事本,要不然会乱码!!!
下面是配置说明:
--------------------------------------------------------------------
为了配置的方便,重新整理了代码,现在已经把全部的需要设置的参数都放在
config.php文件里了,配置起来应该很简单,里面有详悉的说明.
目标:在十分种内搞定你的留言本!!!
1: 建立一个数据库(要主页提供数据库空间)
一般象oso的有phpMyAdmin开放源玛的前端.创建以来很简单的.
取好名字后,记得把config.php 的$db_name改成这个名字
2: 建立留言表(等下把config.php的$table_name改成这里你起的名字).
结构为:
key_liuyan int(11) auto_increment primary key, //主建,自动增加
nikename varchar(20) null // 昵称
subject varchar(100) null // 留言主题
date_created varchar(19) // 留言时间
ip_address varchar(15) // 留言人的IP地址
message mediumtext null // 留言信息
email_address varchar(50) null // 留言人的e-mail地址
zhuye_address varchar(50) null // 留言人的主页地址
huifu_biaozi int(1) default 0 // 版主回复标志
huifu mediumtext null // 版主回复内容
oicq varchar(20) null // 留言人的OICQ号码
可以用如下的SQL来完成!!!(本人测试通过,记得把yourtable_name改成好记点的,
当然不改也行阿)
create table your_liuyan_table(
key_liuyan int(11) auto_increment primary key,
nikename varchar(20) null,
subject varchar(100) null,
date_created varchar(19) ,
ip_address varchar(15),
message mediumtext null,
email_address varchar(50) null,
zhuye_address varchar(50) null,
huifu_biaozi int(1) default 0 ,
huifu mediumtext null,
oicq varchar(20) null
)
3: 建立控制表:(同样要把这里起的名字放到config.php的$table_name_control里去)
结构如下:
leibie varchar(20) primary key,
value varchar(20) null
也可以用下面的SQL语句:
create table your_control_table(
leibie varchar(20) primary key,
value varchar(20) null
)
因为这是你的控制表,所以要自己加入控制记录两条;
SQL语句为:
插入删除密码:
insert into your_control_tble(
leibie,
value)
values
(delete,'1332');
插入回复密码:
insert into your_control_tble(
leibie,
value)
values
(huifu,'1332');
这样放进去的密码为:123,用户名为空!
怎么计算密码和插入的值的关系呢?
是这样的,你的密码 ,如123 把三位数上的各位加起来,等于6,然后把6乘以222就是密码值!!!
6*222=1332.
知道了这关系,当然你可以改成其它的密码了.
不过用户名要为空,,,
这实行的简单加密的原理可以参照主页 http://cxg168.126.com 的三位数.
4: 一切完成,然后只要把除了readme.txt外的文件上传就行了.
Tags: php, 技巧, mysql
PHP | 评论:0
| Trackbacks:0
| 阅读:306
Submitted by aming on 2008, March 7, 9:08 AM
3. 使用POST方式
其实POST方式跟Get方式是比较类似的,只是在执行Ajax的时候稍有不同,我们简单讲述一下。
假设有一个用户输入资料的表单,我们在无刷新的情况下把用户资料保存到数据库中,同时给用户一个成功的提示。
//构建一个表单,表单中不需要action、method之类的属性,全部由ajax来搞定了。
<form name="user_info">
姓名:<input type="text" name="user_name" /><br />
年龄:<input type="text" name="user_age" /><br />
性别:<input type="text" name="user_sex" /><br />
<input type="button" value="提交表单" onClick="saveUserInfo()">
</form>
//构建一个接受返回信息的层:
<div id="msg"></div> |
我们看到上面的form表单里没有需要提交目标等信息,并且提交按钮的类型也只是button,那么所有操作都是靠onClick事件中的saveUserInfo()函数来执行了。我们描述一下这个函数:
function saveUserInfo()
{
//获取接受返回信息层
var msg = document.getElementById("msg");
//获取表单对象和用户信息值
var f = document.user_info;
var userName = f.user_name.value;
var userAge = f.user_age.value;
var userSex = f.user_sex.value;
//接收表单的URL地址
var url = "/save_info.php";
//需要POST的值,把每个变量都通过&来联接
var postStr = "user_name="+ userName +"&user_age="+ userAge +"&user_sex="+ userSex;
//实例化Ajax
var ajax = InitAjax();
//通过Post方式打开连接
ajax.open("POST", url, true);
//定义传输的文件HTTP头信息
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//发送POST数据
ajax.send(postStr);
//获取执行状态
ajax.onreadystatechange = function() {
//如果执行状态成功,那么就把返回信息写到指定的层里
if (ajax.readyState == 4 && ajax.status == 200) {
msg.innerHTML = ajax.responseText;
}
}
} |
大致使用POST方式的过程就是这样,当然,实际开发情况可能会更复杂,这就需要开发者去慢慢琢磨。
4. 异步回调(伪Ajax方式)
一般情况下,使用Get、Post方式的Ajax我们都能够解决目前问题,只是应用复杂程度,当然,在开发中我们也许会碰到无法使用Ajax的时候,但是我们又需要模拟Ajax的效果,那么就可以使用伪Ajax的方式来实现我们的需求。
伪Ajax大致原理就是说我们还是普通的表单提交,或者别的什么的,但是我们却是把提交的值目标是一个浮动框架,这样页面就不刷新了,但是呢,我们又需要看到我们的执行结果,当然可以使用JavaScript来模拟提示信息,但是,这不是真实的,所以我们就需要我们的执行结果来异步回调,告诉我们执行结果是怎么样的。
假设我们的需求是需要上传一张图片,并且,需要知道图片上传后的状态,比如,是否上传成功、文件格式是否正确、文件大小是否正确等等。那么我们就需要我们的目标窗口把执行结果返回来给我们的窗口,这样就能够顺利的模拟一次Ajax调用的过程。
以下代码稍微多一点, 并且涉及Smarty模板技术,如果不太了解,请阅读相关技术资料。
上传文件:upload.html
//上传表单,指定target属性为浮动框架iframe1
<form action="/upload.php" method="post" enctype="multipart/form-data" name="upload_img" target="iframe1">
选择要上传的图片:<input type="file" name="image"><br />
<input type="submit" value="上传图片">
</form>
//显示提示信息的层
<div id="message" style="display:none"></div>
//用来做目标窗口的浮动框架
<iframe name="iframe1" width="0" height="0" scrolling="no"></iframe> |
处理上传的PHP文件:upload.php
<?php
/* 定义常量 */
//定义允许上传的MIME格式
define("UPLOAD_IMAGE_MIME", "image/pjpeg,image/jpg,image/jpeg,image/gif,image/x-png,image/png");
//图片允许大小,字节
define("UPLOAD_IMAGE_SIZE", 102400);
//图片大小用KB为单位来表示
define("UPLOAD_IMAGE_SIZE_KB", 100);
//图片上传的路径
define("UPLOAD_IMAGE_PATH", "./upload/");
//获取允许的图像格式
$mime = explode(",", USER_FACE_MIME);
$is_vaild = 0;
//遍历所有允许格式
foreach ($mime as $type)
{
if ($_FILES['image']['type'] == $type)
{
$is_vaild = 1;
}
}
//如果格式正确,并且没有超过大小就上传上去
if ($is_vaild && $_FILES['image']['size']<=USER_FACE_SIZE && $_FILES['image']['size']>0)
{
if (move_uploaded_file($_FILES['image']['tmp_name'], USER_IMAGE_PATH . $_FILES['image']['name']))
{
$upload_msg ="上传图片成功!";
}
else
{
$upload_msg = "上传图片文件失败";
}
}
else
{
$upload_msg = "上传图片失败,可能是文件超过". USER_FACE_SIZE_KB ."KB、或者图片文件为空、或文件格式不正确";
}
//解析模板文件
$smarty->assign("upload_msg", $upload_msg);
$smarty->display("upload.tpl");
?>
模板文件:upload.tpl
{if $upload_msg != ""}
callbackMessage("{$upload_msg}");
{/if}
//回调的JavaScript函数,用来在父窗口显示信息
function callbackMessage(msg)
{
//把父窗口显示消息的层打开
parent.document.getElementById("message").style.display = "block";
//把本窗口获取的消息写上去
parent.document.getElementById("message").innerHTML = msg;
//并且设置为3秒后自动关闭父窗口的消息显示
setTimeout("parent.document.getElementById('message').style.display = 'none'", 3000);
} |
使用异步回调的方式过程有点复杂,但是基本实现了Ajax、以及信息提示的功能,如果接受模板的信息提示比较多,那么还可以通过设置层的方式来处理,这个随机应变吧。
[ 结束语 ]
这是一种非常良好的Web开发技术,虽然出现时间比较长,但是到现在才慢慢火起来,也希望带给Web开发界一次变革,让我们朝RIA(富客户端)的开发迈进,当然,任何东西有利也有弊端,如果过多的使用JavaScript,那么客户端将非常臃肿,不利于用户的浏览体验,如何在做到快速的亲前提下,还能够做到好的用户体验,这就需要Web开发者共同努力了。
Tags: ajax, php
AJAX | 评论:0
| Trackbacks:0
| 阅读:266
Submitted by aming on 2008, March 7, 9:06 AM
AJAX无疑是2005年炒的最热的Web开发技术之一,当然,这个功劳离不开Google。我只是一个普通开发者,使用AJAX的地方不是特别多,我就简单的把我使用的心得说一下。(本文假设用户已经具有JavaScript、HTML、CSS等基本的Web开发能力)
» 阅读全文
Tags: ajax, php
AJAX | 评论:0
| Trackbacks:0
| 阅读:295