任务 6.2 云笔记 - 用户认证(3)

三、编写注册功能

找到AppServ的安装目录,进入里面的www文件夹:

网站根目录

此目录下每一个文件夹对应一个应用项目。例如我们刚才操作数据库时用到的phpMyAdmin,它也在这个目录中。我们为笔记项目新建一个名叫simplenote的目录。

先测试一下我们的站点能否正常工作

我们用DreamWeaver(以下简称DW)作为PHP语言的编辑工具。启动DW,新建名为index.php的页面并保存到刚才建立的simplenote目录下:

不同版本的DW界面不尽相同,但是大同小异。

编辑刚创建的index.php如下并保存:





Simple Note



Simple Note

在浏览器中访问下面的地址:

http://localhost/simplenote/

效果如下:

浏览默认页面

编写公用的数据库连接代码

连接数据库操作将被各个模块广泛使用,因此将它单独作为一个模块编写。
在DW中创建名为conn.php的文件并保存到simplenote目录,内容如下:

 

编写注册页面代码

创建名为register.php的源文件。清除其它内容,只保留PHP标签:

接下来,包含前面创建的conn.php文件:


获取客户端提交的注册信息

注册过程中,需要使用客户端提交上来的用户信息,包括:

  • 用户名
  • 密码
  • 个人签名

这些参数通常用HTTP协议的POST方式提交。PHP语言把这些提交上来的参数放置在一个名为“_POST”的数组中,并通过键来访问。编写代码从_POST数组中获取三个参数,存到三个变量中:

$email = $_POST[ "email" ];
$password = $_POST[ "password" ];
$personalSign = $_POST[ "personalSign" ];

检查注册的email地址是否已经存在

$sql = "SELECT * FROM `user` WHERE `email`='$email'";
$result = mysql_query( $sql );
$num_rows = mysql_num_rows( $result );

接下来,如果email已存在,则向客户端返回错误信息;如果不存在,则将用户数据写入user表,然后向客户端报告注册成功。
PHP返回给客户端的数据为JSON格式。例如当email重复时,返回出错信息:

{ "code" : 0, "msg" : "Email已注册", "email" : "[email protected]" }

先编写代码设置页面内容数据类型为JSON:

header( 'Content-type: text/json' );

接着分别处理注册的email地址重复与不重复的情况:

if ( empty($email) || $num_rows > 0 ) {
    // email重复或非法,返回错误信息    
    $ret = array(
        "code" => 0,
        "msg" => "账户信息错误",
        "email" => $email
    );
    echo json_encode( $ret, JSON_UNESCAPED_UNICODE );
} else {
    // 向数据库中写入注册用户信息
    $sql = "INSERT INTO `user` (`id`, `email`, `pass`, `sign`) VALUES (NULL, '$email', '$password', '$personalSign')";
    $result = mysql_query( $sql );
    if ( !empty( $result ) ) {
        // 用户信息写入成功
        $ret = array(
            "code" => 1,
            "msg" => "注册成功",
            "email" => $email
        );
    } else {
        // 用户信息写入失败,错误代码-1
        $ret = array(
            "code" => -1,
            "msg" => "服务器罢工,请联系客服",
            "email" => $email
        );
    }
    echo json_encode( $ret, JSON_UNESCAPED_UNICODE );
}

四、编写登录功能

登录功能中,PHP也是读取客户端以POST方式提交的email账号和密码,然后同数据库中的已有的email地址以及密码进行匹配。匹配成功则登录成功,将登录成功的信息返回给用户;数据库中没有能够匹配的条目,说明用户提供的信息错误,登录失败并通知客户端。
在DW中创建名为login.php的文件并保存到simplenote目录下。引用conn.php文件并获取客户端参数的实现与注册代码类似:


接着查询user表中有没有email和密码分别等于$email和$password的记录:

// 在数据库中查询与email和密码完全匹配的记录
$sql = "SELECT * FROM `user` WHERE `email`='$email' AND `pass`='$password'";
$result = mysql_query( $sql );
$num_rows = mysql_num_rows( $result );

如果存在记录,则用户信息验证通过,向客户端返回登录成功的JSON串:

header( 'Content-type: text/json' );
if (!empty($email) && $num_rows >= 1 ) {
    // 存在对应记录,表明登录成功
    $row = mysql_fetch_array( $result );
    // 生成含有结果信息的JSON    
    $ret = array(
        "code" => "1",
        "msg" => "OK",
        "email" => $row[ 'email' ]
    );
    echo json_encode( $ret, JSON_UNESCAPED_UNICODE );
} 

否则向用户返回登录失败的JSON串:

else {
    // 登录失败,返回含有出错信息的JSON
    $ret = array(
        "code" => "0",
        "msg" => "ERROR",
        "email" => $row[ 'email' ]
    );
    echo json_encode( $ret, JSON_UNESCAPED_UNICODE );
}

可以从浏览器分别访问注册和登录页面以进行验证。由于浏览器访问基于GET方式,因此无法提供用户数据,所以我们看到的返回信息一定是出错信息:

返回的注册出错信息
返回的登录失败信息

你可能感兴趣的:(任务 6.2 云笔记 - 用户认证(3))