|
本帖最后由 lypying 于 2011-1-23 21:07 编辑
难度系数:中高
适合人群:具有一定编程能力的人
既然一票难求哥们就不回家了,过年么,无业游民的我也没啥事情。给一朋友写完一个嘉缘人才系统ASP版本的采集接口。发现论坛上有关接口的教程很少。所以决定写下此文,送人玫瑰手留余香么。本文只介绍接口的相关知识,以及写接口需要注意的内容。并不提供接口下载,我花时间做的手写了几千行代码,在没进入共产主义之前我还是不想共享的。如果您不是抱着一个学习交流的态度,想免费弄个接口请不要阅读此文。此文仅献给那些有心学习的人。管理员是否酌情加点车厢,攒个车厢换个版本。个人版用的真是太不爽了。
好的 言归正传
第一章、火车接口是什么?
通俗一点说火车采集器的接口文件就是一个写入数据库的代码。ASP接口是用ASP语言写入数据库,PHP接口就是用PHP语言编程写入数据库。单独的写入数据库并不难,就算您不是ASP或者PHP程序员,上百度搜索下两种语言的入库教程就可以轻松做一个简单的接口。当然.NET和其他语言也不例外。
1、什么样的程序使用接口
有人会问有后台WEB发布、数据库发布模块为什么要写接口。无论是后台WEB发布还是数据库发布都不是万能的。但是接口一定是万能的。为什么这么说。比如嘉缘人才网这个程序,后台管理员是要通过注册用户,然后完善企业招聘以及个人招聘,这就分了两个步骤,每个步骤写入不同的表。显然你要在后台做WEB发布只能完成一步。就数据库发布模块来说确实不错,可以操作许多个表,但是数据库发布也有不严谨的地方,比如数据库设计的字段类型是INT类型,结果你采集的数据全角半角部分插入了中文,这个就是问题,当然您也可以用插件判断解决这个问题。但是对于大多免费版个人版的用户显然这是不可能的。
那么什么样的程序使用接口哪?
第一,数据入库操作需要几步完成。发布数据并不是在一个页面中完成的。
第二,数据库发布模块制作很繁琐,几个表之间存在复杂的关联关系。
这样就需要使用接口来完成采集操作。
2、使用接口的好处
使用接口可以将写入不同表的数据进行整理,统一进行入库操作。
使用接口可以使一些不符合规范的数据进行过滤。
3、使用接口所需要的知识储备
您至少需要掌握一门语言(asp/php/.net/jsp等)入库操作,熟悉SQL基本插入 修改语句。熟悉ACCESS,MYSQL,SQL SERVER的基本操作
4、开发火车采集器接口应注意什么
尽量使用源程序的函数,尽量使用源程序的过滤判断,这样避免数据不规范的时候入库失败等问题
第二章、嘉缘人才网企业人才接口开发实例
1、熟悉数据库接口,了解入库操作
人才系统是比较复杂的系统之一,因为我拿到的是嘉缘人才网ASP+ACCESS版本,仅就此版本为例。SQL SERVER版本也一样,一般一个公司开发的同一语言不通数据库的程序,数据库结构应该是完全相同的。否则这公司又要重新开发程序,不是很费成本
就个人入库操作来说,先注册个用户。用抓包软件抓包。看这个数据是通过哪个文件写入数据库的。
看到是POST到http://127.0.0.1/Regdisposal.asp ... l&Member_type=1 这个地址,其实通过这个地址我们就可以得到以下信息
1、POST到的文件是Regdisposal.asp
2、带了两个参数Action、和Member_type
通过字面意思Action的行为是Action=Regdisposal注册用户,Member_type会员类型为1,是个人 可能其他的数字就是不同的类型
到网站源代码中找到Regdisposal.asp这个文件
打开后先搜索Action
看到如下代码- Action=trim(Request("Action"))
- Select Case Action
- Case "checkregmsg"
- Call checkregmsg()
- Case "Regdisposal"
- Call Regdisposal()
- End Select
复制代码 Action的行为有两个 一个是我们需要的Regdisposal调用了Regdisposal()函数,那我们就先看这个,不看checkregmsg(),但是通过字面意思理解可能是检查注册信息的作用。
在所搜Regdisposal()
找到了Sub Regdisposal() 看源代码
先找到入库的操作- set rs=server.createobject("adodb.recordset")
- sql="select * from JOB_Member where Member_login='"&login&"' or Member_email='"&email&"'"
- rs.open sql,conn,1,3
- if not rs.eof then
- response.write ("<script language=JavaScript>{alert('用户名或邮箱存在!');location.href = 'javascript:history.back()';}</script>")
- Response.End()
- else
复制代码 看到入的表是JOB_Member 并对是否有重复的用户名和邮箱进行了判断,如果在接口的制作过程中建议使用源程序的函数,这样对数据存储的安全性更好一些。
看下面的代码- rs.addnew
- rs("Member_login")=login
- rs("Member_pwd")=pwd
- rs("Member_email")=email
- rs("Member_mobile")=mobile
- rs("Member_sendemail")=sendemail
- rs("Member_Auditing")=flag
- rs("Member_regdate")=Now()
- rs("Member_typeid")=0
- rs("Member_groupid")=0
- rs("Member_loginnum")=0
- rs("Member_balance")=0
- rs("Member_integral")=0
- rs("Member_LoginIP")=trueIP
- rs("Member_logindate")=now()
- rs.update
复制代码 这就是对一些数据的入库操作。可以看是注册用户名 密码 EMAIL 手机号 SENDMAIL 一些标志位和时间 还有注册的IP
未完待续 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?加入会员
x
评分
-
1
查看全部评分
-
|