php+mongodb+vue实现注册登录多用户笔记系统代码
代码语言:php
所属分类:其他
代码描述:php+mongodb+vue实现注册登录多用户笔记系统代码
代码标签: php mongodb vue 注册 登录 多用户 笔记 系统 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<?php
// ##################################################################
// # 错误与异常日志记录器(保存到单独文件)
// ##################################################################
function log_fatal_error() {
$error = error_get_last();
if ($error && in_array($error['type'], [E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR, E_USER_ERROR])) {
$message = "[" . date('c') . "] [FATAL] {$error['message']} in {$error['file']} on line {$error['line']}\n";
$logFile = __DIR__ . '/mongo_ui_errors.log';
error_log($message, 3, $logFile);
}
}
function log_uncaught_exception($exception) {
$message = "[" . date('c') . "] [EXCEPTION] " . $exception->getMessage() . " in " . $exception->getFile() . " on line " . $exception->getLine() . "\nStack trace:\n" . $exception->getTraceAsString() . "\n";
$logFile = __DIR__ . '/mongo_ui_errors.log';
error_log($message, 3, $logFile);
// 在API请求中,返回JSON错误;否则显示HTML错误
if (!empty($_REQUEST['action'])) {
json_response(['success' => false, 'message' => '系统发生内部错误,请联系管理员'], 500);
} else {
http_response_code(500);
echo "<h2>系统发生内部错误,请查看日志。</h2>";
}
exit;
}
// **修复 1:激活错误与异常处理器**
register_shutdown_function('log_fatal_error');
set_exception_handler('log_uncaught_exception');
// **修复 2:更安全的 Session 启动**
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
// --- 安全设置 ---
define('DB_USER', ''); // 数据库账号
define('DB_PWD', ''); // 数据库密码
define('DB_NAME', ''); //
// --- API 路由 ---
if (isset($_REQUEST['action'])) {
handle_api();
}
function handle_api() {
$action = $_REQUEST['action'];
// **修复 3:将 'me' 添加到需要认证的操作列表**
$authActions = ['list', 'get', 'save', 'delete', 'search', 'me', 'change_password'];
$userActions = ['register', 'login', 'logout'];
if (in_array($action, $userActions)) {
try {
call_user_func("api_$action");
} catch (Exception $e) {
json_response(['success' => false, 'message' => $e->getMessage()], 400); // 通常是客户端输入错误
}
return;
}
// 需要登录的操作
if (!isset($_SESSION['user_id'])) {
json_response(['success' => false, 'message' => '未登录或会话已过期'], 401);
}
if (!in_array($action, $authActions)) {
json_response(['success' => false, 'message' => '无效操作'], 400);
}
try {
call_user_func("api_$action");
} catch (Exception $e) {
json_response(['success' => false, 'message' => $e->getMessage()], 500); // 通常是服务器端错误
}
}
function get_manager() {
$dsn = "mongodb://";
if (DB_USER && DB_PWD) {
$dsn .= DB_USER . ':' . DB_PWD . '@';
}
$dsn .= "127.0.0.1:27017/" . DB_NAME;
try {
return new MongoDB\Driver\Manager($dsn);
} catch (MongoDB\Driver\Exception\Exception $e) {
t.........完整代码请登录后点击上方下载按钮下载查看















网友评论0