今天的事情来的有点突然, 要写一个最简单的CGI来支持用户进行用户名/密码的论证, 问了装服务器的人之后, 知道是装了默认的IIS, 所以我在自己的Windows XP sp2上装上IIS, 开始现学现卖ASP.
同事推荐我看IIS本身带的ASP教程, 照着做. 还算顺利, 除了我喜欢在每条VBScript语句后面加上一个分号, 除了我不知道怎么从while, for each中break和continue, 除了要用Wend结束对应的while, 除了没有if else if ...这种跟case对等的结构支持, 除了大小写不敏感, 除了单引号表示注释和 & 号表示字符串连接, 还要除了对等的两个单引号无论如何也还是注释, 而不是一个自符串. 还要, 我还要说, dim i = 5这样的语法是不允许的, 你必需先
dim i
然后
i = 5
总算走到真正要在表单之间传数据了, 由于是传递用户名密码信息, 我不想用GET方法, 所以用POST, 当然, 我看的第一眼的例子是 Request.QueryString("var") 的写法来取表单中的变量的, 失败时查资料, 发现对于POST的Form要用 Request.Form("var"). 还是不行. 怀疑自己把Form拼成了From, 检查, 我没有犯这种错误. 上google搜, 发现了Request.Form("var")() 的写法和Request.Form("var")(0) 的写法, 心生疑惑, 但是为了快点出结果乖乖照做, 不行. 这时候血压就已经有些不正常了. 开始把眼迷起来死盯着屏幕找错, 继而把以前做过这方面的同事找来分享他的眼球注意力, 还是未果. 再想对POST的支持不会也要IIS配置一下才行吧, 这样的话太琐碎了, 可能性不大, 怀疑使用POST方法有什么tricks, 上GOOGLE搜, 没有.
这么一折腾, 一个上午差不多就过去了, 我已经有点出离愤怒了, 吃完饭, 这件事还是在我心中挥之不去, 就象我后来跟一个哥们说的, 一开始我只是想解决问题, 其实暂时用GET方法还凑合. 但到后来我是真被惹火了. 虽然公司不让用聊天工具, 我还是打开了MSN, YAHOO, QQ, 找那些搞技术的朋友们, 终于碰到一个达人, 我撂下话, 一定要把我这个问题搞定. 两位达人分别试验, 发现在他们的环境里一切正常, 其中一个达人作结道: 他在windows 2000 pro和windows xp上都发现IIS的BUG, 据说在windows 2000 server上装的IIS没有问题. 至此结案.
开始想办法保存用户名/密码, 先从用户出发, 不懂技术的人市场人员你不能指望他能遵照一个你定下的文件格式来写文件. 所以我决定对用户友好, 哪怕这是对自己不友好. IIS教程里有一个用ADODB访问 excel表格的文件. 对excel表格的要求是:
field1_name1 field_name2
user1 asdf
user2 1234
要在excel里选中包括第一行的内容, 第一行会被处理成数据库中相当于数据字典定义也就是字段名的东西, 然后在 插入->名单->定义... 菜单中给这个区域取一个名字. 这是微软的建议, 这个建议基本上限制了所有的可用性. 因为我们的市场人员要经常维护这张表, 如果追加一条记录, 就要选择全部的内容, 再重新定义一下整个区域的名字. 我想出来一个办法就是选择整列定义一个名字, 却发现这样的整列在数据访问时, 虽然有些后面的行是空的, 我从未往其单元格里填地内容, 却也被当作数据行取出来, 乱!
总算狠狠心这也忍了. 又发现当一列中有的单元格是纯数字而有的单元格含有文字时, 更乱了, 如果第一条记录的内容是纯数据, 则以后的非纯数字的单元格内容显示空, 反之, 如果第一条记录的内容是文本, 则此后的纯数字会被显示为空. 也就是对上面的例子来说, 先碰到asdf, 所以把这一整列都当成文本来处理, 对1234的处理就出错. 把它们两个调换顺序, asdf又出错. 观察单元格里asdf和1234的对齐方式, 的确数字和文本的处理是不同的, 文本是左对齐, 而数字是右对齐.
用GOOGLE找到了这条技巧: 在输入数字之前输入一个单引号, 可以强制把数字视为纯文本. 一试, 灵了
但接下来对excel的测试却让我更加疑惑这个选择: 有时说打不开excel文件, 速度慢, 最关键的就是这个不稳定因素, 一想到以后可能出的问题: excel的格式, 版本, 同一个文件中用户可能把格式搞乱. 算了, 这条路太难走.
我选择了文本文件, 简单到妇孺皆知的格式:
user_name:password
将就着用吧. 全部搞定, 传到服务器上测试, 却发现不知何故服务器上的IIS却根本对<% ... %>这样的标记不加解释. 原封不动扔给浏览器. 晕死
我对微软犯下这样的基本的, 简单的, 容易改正的错误(POST)感到极为愤慨. 我也奇怪于我用类似的关键字搜索时没有一条信息是关于IIS本身的缺陷报告的. 有的只是解释GET和POST的区别. 深一点的讲各自的工作原理, 但, 却不是我的问题所在.
这样的方式过技术生活有点累, 有点不值, 有点觉得扯淡, 有点阴沟里翻船的感觉, 有点不爽. 我有点后悔让公司领导知道我的"博学", 以至于边边角角的事他都认为是你的所谓"博学"能罩得住的, 配MAIL服务器找你, 写CGI也找你, 完全不顾及这对我来说虽说是能力可及却是在糟蹋我的精力. 搞技术的, 一定要想办法好保护好自己的兴趣, 不能乱出头, 不能强出头. 唉, 今天真累
阅读(1463) | 评论(0) | 转发(0) |