三、编写注册功能
找到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目录,内容如下:
ini_set("display_errors", "Off");
error_reporting(E_ALL | E_STRICT);
error_reporting(E_ALL ^ E_NOTICE);//报错级别设置
//连接MySQL数据库系统,并选择simplenote数据库
$conn=mysql_connect ("localhost", "root", "1234qwer");
mysql_select_db("simplenote");
mysql_query("set names utf-8");
?>
编写注册页面代码
创建名为register.php的源文件。清除其它内容,只保留PHP标签:
接下来,包含前面创建的conn.php文件:
include( "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文件并获取客户端参数的实现与注册代码类似:
session_start();
include( "conn.php" );
$email = $_POST[ "email" ];
$password = $_POST[ "password" ];
// 其它代码
...
?>
接着查询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方式,因此无法提供用户数据,所以我们看到的返回信息一定是出错信息: