走过平凡人生、留下平凡足迹 注册 | 登陆
浏览模式: 标准 | 列表全部文章

Ajax基础教程 1.2 - 浏览器历史

提到Web浏览器,大多数人都会想到无处不在的Microsoft Internet Explorer,直到最近像FirefoxSafariOpera之类的浏览器日益兴起,这种情况才稍有改观。许多新手可能会误认为IE是市场上的第一个浏览器,其实不然。实际上,第一个Web浏览器出自Berners-Lee之手,这是他为NeXT计算机创建的(这个Web浏览器原来取名叫WorldWideWeb,后来改名为Nexus),并在1990年发布给CERN的人员使用。Berners-LeeJean-Francois GroffWorldWideWeb移植到C,并把这个浏览器改名为libwww20世纪90年代初出现了许多浏览器,包括Nicola Pellow编写的行模式浏览器(这个浏览器允许任何系统的用户都能访问Internet,从UnixMicrosoft DOS都涵盖在内),还有Samba,这是第一个面向Macintosh的浏览器。

19932月,伊利诺伊大学Urbana-Champaign分校美国国家超级计算应用中心的Marc AndreessenEric Bina发布了Unix版本的Mosaic。几个月之后,Aleks Totic发布了MosaicMacintosh版本,这使得Mosaic成为第一个跨平台浏览器,它很快得到普及,并成为最流行的Web浏览器[1]。这项技术后来卖给了Spyglass,最后又归入Microsoft的门下,并应用在Internet Explorer中。

1993年,堪萨斯大学的开发人员编写了一个基于文本的浏览器,叫做Lynx,它成为了字符终端的标准。1994年,挪威奥斯陆的一个小组开发了Opera,到1996年这个浏览器得到了广泛使用。199412月,Netscape发布了Mozilla1.0版,第一个盈利性质的浏览器从此诞生。2002年又发布了一个开源的版本,这最终发展为200411月发布的、现在十分流行的Firefox浏览器。

Microsoft发布Windows 95时,IE 1.0是作为Microsoft Plus!包的一部分同时发布的。尽管这个浏览器与操作系统集成在一起,但大多数人还是坚持使用NetscapeLynxOperaIE 2.0有了很大起色,增加了对cookie、安全套接字层(Secure Socket LayerSSL)和其他新兴标准的支持。2.0版还可以用于Macintosh,从而成为Microsoft的第一个跨平台浏览器。不过,大多数用户还是很执着,仍然坚持使用他们习用的浏览器。

不过到了1996年夏天,Microsoft发布了IE 3.0版。几乎一夜之间,人们纷纷拥向IE。当时,Netscape的浏览器是要收费的,Microsoft则免费提供IE。关于浏览器领域谁主沉浮,因特网社区发生了两极分化,很多人担心Microsoft会像在桌面领域一样,在Web领域也一统天下。有些人则考虑到安全因素——果然不出所料,发布3.09天之后就报告了第一个安全问题。但是到1999年发布IE 5时,它已经成为使用最广的浏览器。

Tags: ajax, javascript, php

Ajax基础教程 1.1 - Web应用简史

Ajax技术可以提供高度交互的Web应用,给予用户更丰富的页面浏览体验。本书重点介绍Ajax及相关的工具和技术,主要内容包括XMLHttpRequest对象及其属性和方法、发送请求和处理响应、构建完备的Ajax开发工具、使用JsUnit测试JavaScript、分析JavaScript调试工具和技术,以及Ajax开发模式和框架等。本书中所有例子的代码都可以从Apress网站本书主页的源代码(Source Code)免费得到。本书适合各层次Web应用开发人员和网页设计人员阅读。
 

» 阅读全文

Tags: ajax, javascript, php

基于PHP和MYSQL留言本 二

今天再稍微改善下加一个管理员管理留言的功能~~~这里最主要要用到
$_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和MYSQL留言本 一

留言本最基本的功能就是:
  1:用户写留言
  2:把数据写入数据库
  3:显示所有留言

» 阅读全文

Tags: php, 技巧, mysql

留言本 二

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

留言本 一

此留言本的优点和缺点:
-------------------------------------------------------------------
这可能是最重要的了.哈哈!!!

优点:

该留言本最大的优点是,换行.实现了用户换行,(保持原形,中国人的同学录的换行是安一定字数的,也就是说不管你的换行,统统都他给你换行.这样要是想贴文本图形的话,就存在问题了.)而现在大部分的留言本都没有实现自动换行,也就是说它不管你一句写多少个字符,它都会在一行显示,这样要是有一个留言没换行的话,留言本就会变的很难看,窗口下面的行条就会好长,,破坏了叶面的美观!!!.

到今天为止,我还没发现能同时解决这两个问题的留言,这也是我写这留言本的原因所在.

包括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

AJAX 技术在PHP中简单应用 二

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 技术在PHP中简单应用 一

AJAX无疑是2005年炒的最热的Web开发技术之一,当然,这个功劳离不开Google。我只是一个普通开发者,使用AJAX的地方不是特别多,我就简单的把我使用的心得说一下。(本文假设用户已经具有JavaScript、HTML、CSS等基本的Web开发能力)

» 阅读全文

Tags: ajax, php