當需要使用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((函數名)=>{}