所谓"人过留名,雁过留声",几乎每个动态交互式的网站都有一个注册模块用来保存用户信息,并提供一个登录模块以供注册用户登录。本章将建立一个注册程序,以实现用户的登录和注册。 通过本章的学习,读者将了解: — 如何建立 HTML 表单; — PHP 如何获取用户填写的信息; — 如何建立 PHP 与 MySQL 数据库的连接; — 如何使用 PHP 往数据库添加记录及如何在数据库中查找记录; — 如何使用 JavaScript 脚本语言在客户端编程; — 如何使用正则表达式进行数据验证; — PHP 如何使用 Session 来记住用户的登录信息; — 数据库处理错误的调试方法。 通过本章的学习,读者将对 PHP 网络编程有一个总体性的认识,为以后章节的学习打下良好的基础。 2.1 建立用户信息表 网站的开发是一个以数据为中心的开发过程,所以数据库的设计非常重要,在进行编程之前一定要做好需求分析和数据库设计。 本例将在 MySQL 安装时自动建立的 test 数据库中建立一张名为 t_user 的用户信息表。 t_user 的表结构如表 2-1 所示。 表 2-1 表 t_user 的结构 列 名 数 据 类 型 长 度 允 许 空 默 认 值 字 段 说 明 f_username char 50 否 无 用户名,主键 f_password char 50 否 无 用户密码 f_name char 50 否 无 用户姓名 f_email char 50 否 无 用户 E-mail 地址 f_logintimes int 4 否 0 登录次数 f_lasttime datetime 8 是 最后登录时间 f_loginip char 19 是 最后登录 IP 在编程开发中,程序员的代码应当是自注释的,也就是代码能够向阅读者传达出自身作用的信息,额外的说明语句需要但不宜太多,否则会降低代码的可读性。在编 程开发中,为每一个对象选择一个合适的名称是非常重要的,在进行数据库设计时为每张表及每个字段合适地命名也很重要。给表名和字段名提供一个合适的前缀可 以显著提高代码的可读性,笔者就喜欢给表名加上前缀"t_",为字段名加上前缀"f_"。 很多开发者可能会为用户信息表添加一个 int 型自动增量字段(如 f_uid)作为主键,但笔者认为这样做是弊大于利、得不偿失的。一来造成空间的浪费,二 来时间效率上也有所降低。因为在实际开发过程中用户名是使用得最为频繁的查询条件,而众所周知在主键上进行的查询,其速度是最快的;使用自动增量字段为主 键的话,在用户名作为条件的查询上则要先根据用户名查找到...