当需要使用PHP来对mongoDB进行操作时,需要进行一些步骤:
PHP需要版本:5.6.28 在PHP文件下打开cmd,输入php.exe -v查看PHP版本号
需要下载并加载扩展模块:mongo 1.6.16
下载地址:http://pecl.php.net/package/mongo/1.6.16/windows
这里使用x86,支持线程安全的版本
步骤:
下载完毕后放在XAMPP下PHP中的ext中
打开PHP文件夹下的php.ini
在912行左右位置添加:extension=php_mongo.dll
然后再PHP文件夹中打开命令行,输入php.exe -m查看是否添加了mongo.dll
创建连接数据库的PHP文件
<?php
//初始化
header('Content-Type:application/json');
//连接mongodb的服务
$conn = new MongoClient();
//指定要链接的数据库的名称
$db = $conn->db.....;
?>
在其他页面加载这个文件即可 require_once("./init.php");
实例:
注:这些功能写在一个user.php中,user.php与init.php同级目录
1、实现用户注册:
<?php
//引用init.php
require_once("../init.php");
//在该文件当中,封装和用户相关的一些方法,方便去调用
//注册
function register(){
//要在该方法当中引用init.php所定义的变量
//解析客户端参数
global $db;
@$uname = $_REQUEST['uname'];
@$upwd = $_REQUEST['upwd'];
//将数据写入数据库
//1、指定要操作的集合名称
//2、向该集合当中插入文档对象
if($uname&&$upwd){
$db->users->insert([
"uname"=>$uname,
"upwd"=>$upwd
]);
echo json_encode(["ok"=>1,"msg"=>"注册成功"]);
}else{
echo json_encode(
["ok"=>0,"msg"=>"注册失败"]
);
}
}
?>
2、实现用户登录
<?php
require_once("./init.php");
//实现登陆功能
//解析客户端中的用户名和密码
//从users集合中查找,查找的条件就是当前用户名和密码,如果有返回值,登陆成功,否则:登陆失败
function login(){
global $db;
@$uname = $_REQUEST['uname'];
@$upwd = $_REQUEST['upwd'];
if($uname&&$upwd){
$user = $db->users->findOne(["uname"=>$uname,"upwd"=>$upwd]);
if($user){
//登陆成功
echo json_encode(["ok"=>1,"msg"=>"登录成功"]);
//登录成功将数据存储在session中,作为判断用户是否已经登录的凭证信息
session_start();
$_SESSION["uname"] = $user["uname"];
$_SESSION["uid"] = $user["_id"];
}else{
//登陆失败
echo json_encode(["ok"=>0,"msg"=>"登陆失败"]);
}
}else{
echo json_encode(["ok"=>0,"msg"=>"请输入用户名和密码"]);
}
}
3、判断是否处于登录状态,如果是返回uname
//功能:检查当前是否处于登录状态
//查看session中是否有有效信息
//如果包含,返回客户端消息:
//{ok:1,uname:'xxx'}
function isLogin(){
session_start();
@$uid = $_SESSION["uid"];
if($uid){
//返回客户端消息
echo json_encode(["ok"=>1,"uname"=>$_SESSION["uname"]]);
}else{
echo json_encode(["ok"=>0]);
}
}
4、检查用户名是否存在:
//验证用户名是否有效
//从users集合中查找用户名是否存在
function validName(){
global $db;
@$uname = $_REQUEST['uname'];
if($uname){
$user = $db->users->findOne(["uname"=>$uname]);
if($user){
echo json_encode(["ok"=>0,"msg"=>"用户名已被占用"]);
}else{
echo json_encode(["ok"=>1,"msg"=>"用户名可用"]);
}
}else{
echo json_encode(["ok"=>0]);
}
}
5、退出登录
//退出登录 清除session中的信息
function logout(){
session_start();
session_destroy();
echo json_encode(["ok"=>1,"msg"=>"成功退出"]);
}
与web前端进行交互:
首先,使用路由进行逐级调用:
新建路由文件夹routes
在routes中新建5个.php 顺序为register.php validName.php login.php isLogin.php logout.php
内容分别为
require_once("../user.php");
register/validName/login/isLogin/logout()
新建JS,用jQuery异步加载数据即可
$.get("....../isLogin.php").then((函数名)=>{}