喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
 19  1/2  1  2  > 
     
标题: xajax会员注册实例  
本帖已经被作者加入个人空间
 
无喱头 (无喱头)
论坛元老
Rank: 8Rank: 8
扯蛋仙


UID 24846
精华 3
积分 5957
帖子 1150
金钱 5893 喜悦币
威望 30
人脉 34
阅读权限 90
注册 2003-11-26
状态 离线
xajax会员注册实例

xajax会员注册实例

作者: 无喱头
出处: www.phpsoho.com


自去年以来,ajax应用是层出不穷,虽然笔者并不强烈的建议在的前端程序中使用ajax,除非你与google、baidu有着友好的合作关系,但技术的探讨是无限的。下面笔者就给一个ajax会员注册检查的DEMO。

对于phper来说,javascript并不是我们的必修课程,但ajax对javascript的要求是相当高的,我们可能被长篇幅的js脚本吓退,从而使我们放弃学习ajax。但幸运的是,总有是无私的人在为phper完成想要的东西。例如:xajax。

正如我所说,并不是所有的phper对js都了如指掌,我也一样。那么还犹豫什么呢?就使用xajax吧(做个广告^_^!)。

首先布署一下我们的文件系统,这次DEMO的目录结构如下:

<?php
|- register.php
|- db_config.php
|- drivers
    
|- smarty
    
|- adodb
    
|- xajax
|- libs
    
|- mySmarty.class.php
    
|- sqlUtil.class.php
    
|- xajax.reg.server.php
|- tempaltes
    
|- default
        |- 
templates_c
        
|- register.tpl
|- images
    
|- 图片文件略

因为本次DEMO是从以前程序中摘下来的,以前采用了语言包,为了方便,DEMO给出个小语言包来

|- lang
    
|- zh_cn.lang.php
?>
文件系统布署完毕,现在开始实际应用吧!

我们忽略文件系统配置(具体请看实例),单从xajax这块说起。

在reguser.php文件中,大家已经看到,我们引入了xajax驱动文件,由于xajax提供了xajax::getJavascript()方法,所以笔者认为使得xajax有
更高的灵活与兼容性,能与任何(笔者武断的?)模板文件相结合,正如例子中的

<?php
parent
::assign('xajax_javascript'$this->xajax->getJavascript('drivers/xajax'));
?>
所表现的一现,smarty很容易的就能把由xajax产生的xajax驱动JS发送到前端系统中去。这也是我为什么使用此类的原因之一。

那么我们接着讲实际实用。

我们不讨论register.php程序的运行、实现原理,来看

<?php
function __xajax()
{
    
$this->xajax = new xajax('libs/xajax/reguser.server.php');
    
$this->xajax->registerFunction('processFormLoginName');
    
$this->xajax->registerFunction('processFormNickName');
    
$this->xajax->registerFunction('processFormEmail');
    
parent::assign('xajax_javascript'$this->xajax->getJavascript('drivers/xajax'));
}
?>
在方法内部,实例化了xajax类,很简单的把执行程序定位在了我们DEMO中检测文件。通过xajax::registerFunction方法,我们注册了三个函数
"processFormLoginName,processFormNickName,processFormEmail",顾名思义,三个方法分别担负着检测三项内容:“注册用户名、用户昵称及用户email”,
并将由xajax内部产生的js文件发送到前端。在我们显示表单的方法中载入,这就完成了第一步;

前端程序完事了,我们需要后台程序来进行支撑其运行,并动输入的内容进行检测。我一直认为,尽可能的少给服务器压力,所以关于字符是合法,EMAIL是否合法,
字符长度限制这些初级的工作就交给JS做了,具体请看.tpl文件,上面有详细的code。当然,我们需要在通过初步检测后,再进一点检测,这是后话了。

reguser.server.php,此文件位于libs/xajax/下面。重中之中,应该是这个文件了。

依然载入xajax类包,并且实例化,请注意,此处的实例化,没有必要再进行设置执行路径了。在网上看到类似的文章,仍然在此处进行的路径设定。
其实这是没有必要的,因为xajax的追踪机制使用得默认的为当前文件。注册三个方法不再重述。

在这个文件中,需要着重讲解的是 xajaxResponse 类包,这个类包可以说是xajax的最核心的东西了。具体它的一些配置,用法及扩展(xajax为开发者提供了灵活简便的扩展接口,
具体可以看CU-PHP论坛中的版主的文章或者phpsoho.com查看相当资源),对于初学者来说,其中的两个方法对我们最有用

<?php
xajaxResponse
::addAssign($sTarget,$sAttribute,$sData);
xajaxResponse::addAlert($sMsg);
?>
前者为应用程序输出标准的xml,后者为调试代码(xajax允许在不打开xajax->debugOn()的方法下,对单个方法进行DEBUG),这也是xajax缔造者为
我们提供的一个很实用的方法。我们可能要随时调试我们的JS代码,但这却是令人头痛的事情。在大类的CODE中,我们很难分得清到底是那一段出错了。对
于JS,相应大多数人都有过这种感受。

使用方法简单得不用再说了。

我们就一个方法实例来进行讲解:

<?php
function processFormLoginName($aFormValues)
{
    global 
$db,$lang;
    
$objResponse = new xajaxResponse();
    
$db->table "reguser";
    if( !
$db->checkIsExist('loginname',$aFormValues['loginname']) )
    {
        
$objResponse->addAssign('regloginnameinfo','className','box_error');
        
$objResponse->addAssign('regloginnameinfo','innerHTML',$lang['loginNameIsExist']);        
    }
    else 
    {
        
$objResponse->addAssign('regloginnameinfo','className','box_right');
        
$objResponse->addAssign('regloginnameinfo','innerHTML',$lang['regInputOk']);
    }
    return 
$objResponse;
}
?>
注:此方法必须在声明后才有效。
global $db,$lang; 引入下全局变量
$objResponse = new xajaxResponse(); 实例化 xajaxResponse类
$db->table = "reguser"; 设置执行的表名称 (表问我为啥只有reguser而没有带 litou_ 呢,自己去看源码,本DEMO中,提供了偶的sqlUtil类包,对于adodb相应扩展);

其实上面的流程大家写得可能比我更出色。。。。然后我们进行用户登陆名称检测,根据相应的结果,返回相应的值,并且返回一个对象。以至本文件最低的发出。。。

系统核心文件完成,那么我们如何在前端文件中使用呢?

DEMO提供了reguser.tpl文件。打开此文件,查找

<?php
<{$xajax_javascript}>
?>
此处接收了由smarty发送来由xajax产生的js代码。

查找

<?php
xajax_processFormLoginName
(xajax.getFormValues("Form1"));
xajax_processFormNickName(xajax.getFormValues("Form1"));
xajax_processFormEmail(xajax.getFormValues("Form1"));
?>
就这么简单。。。

有兴趣吗,放用做去吧。
虽然我不建议在前端程序中使用此类代码,但在大多数不靠google、baidu活着的网站中使用,效果还是不错的。


 附件: 您所在的用户组无法下载或查看附件



http://www.phpsoho.com 重新开启
2006-2-28 11:01 AM#1
查看资料  Blog  发短消息  顶部
 
sanshi0815 (sanshi0815)
高级会员
Rank: 4
中级会员



UID 63534
精华 1
积分 536
帖子 672
金钱 526 喜悦币
威望 10
人脉 0
阅读权限 50
注册 2005-3-18
状态 离线
[推荐阅读] 招聘php程序[上海]
q强人啊!偶都没看明白!5555555555555555
2006-2-28 11:17 AM#2
查看资料  Blog  发短消息  QQ  顶部
 
shelly0577 (shelly0577)
金牌会员
Rank: 6Rank: 6
高级会员


UID 18493
精华 0
积分 1732
帖子 1735
金钱 1708 喜悦币
威望 0
人脉 24
阅读权限 70
注册 2003-2-21
状态 离线
[推荐阅读] 非网管创业,刚买了台服务器,应该装什么软件?谢谢!
给个演示地址。看看。
2006-2-28 11:19 AM#3
查看资料  访问主页  Blog  发短消息  顶部
 
无喱头 (无喱头)
论坛元老
Rank: 8Rank: 8
扯蛋仙


UID 24846
精华 3
积分 5957
帖子 1150
金钱 5893 喜悦币
威望 30
人脉 34
阅读权限 90
注册 2003-11-26
状态 离线
[推荐阅读] socket 的一个简单问题
http://www.gbrss.com/xajax_reg_demo/register.php

这个是演示地址!




http://www.phpsoho.com 重新开启
2006-2-28 11:27 AM#4
查看资料  Blog  发短消息  顶部
 
庆祝开通 (庆祝开通)
注册会员
Rank: 2
一般会员



UID 67243
精华 0
积分 60
帖子 59
金钱 60 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2005-12-17
状态 离线
[推荐阅读] 在本机上配置的服务器怎么样支持mail功能?
强,代码没看明白
2006-2-28 11:44 AM#5
查看资料  发短消息  顶部
 
liu1210
高级会员
Rank: 4
超级会员


UID 63736
精华 0
积分 968
帖子 957
金钱 968 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2005-3-25
来自 衡山->郑州->北京
状态 离线
[推荐阅读] 写了一段缓存页面的代码,不知道是不是多此一举
这个好做。。。。,还有你的演示在firefox中div没有控制好。。。。,重叠了



Lucene是个好东西
2006-2-28 11:50 AM#6
查看资料  Blog  发短消息  QQ  顶部
 
风和日丽 (风和日丽)
高级会员
Rank: 4
中级会员



UID 28569
精华 0
积分 699
帖子 703
金钱 699 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2004-5-15
来自 深圳
状态 离线
[推荐阅读] 【招聘全职php程序员/网页设计美工】 -- 北京
兄弟我学习学习!!!
2006-2-28 04:04 PM#7
查看资料  访问主页  发短消息  QQ  顶部
 
nuying117
新手上路
Rank: 1
版主


UID 20038
精华 0
积分 6
帖子 3130
金钱 6 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2003-5-22
来自 杭州
状态 离线
[推荐阅读] 请问mysql的各个my.ini版本有什么不同?
这个xajax我也用过,使用很方便,不过一些方面还是得完善的,比如在编码方面,你设置成gb2312编码,但是通过浏览器往服务器端传送的时候,紧紧是他里面的自定义的xml文档的头部设置为gb2312,实际传送的还是utf-8的,我在一个小项目中使用过,遇到这个问题的。



人至淫则无敌,比喻阿矿,比喻csqspc
2006-3-1 02:02 AM#8
查看资料  发短消息  QQ  顶部
 
barryonline (寒)
论坛元老
Rank: 8Rank: 8
厨子


UID 30172
精华 0
积分 4945
帖子 1667
金钱 4945 喜悦币
威望 0
人脉 0
阅读权限 90
注册 2004-7-19
来自 四海为家
状态 离线
[推荐阅读] 怎么样能把表单文件提交的post变量存到一个数组
不错.
能不能把XAJAX和SMARTY结合一下,让XAJAX溶入SMARTY 中
正常调用情况
$smarty->assign('xx',$xxx);
加入XAJAX下
$smarty->Xassign('xx',$xxx);

我觉得推广比技术本身更重要。




谁与共?
上天下地来去兮.
我独行.....
2006-3-1 10:34 AM#9
查看资料  Blog  发短消息  QQ  顶部
 
c1a1o1
版主
Rank: 7Rank: 7Rank: 7
一品带刀护卫


UID 68669
精华 0
积分 1215
帖子 2166
金钱 1215 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2006-2-17
状态 离线
[推荐阅读] Ajax事例
正在学习中



成人电影
php教材价格比较网言情小说
2006-3-1 11:34 AM#10
查看资料  Blog  发短消息  QQ  顶部
 19  1/2  1  2  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.030947 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP