我正在尝试构建一个使用php会话来存储用户登录状态的简单登录门户。我希望即使在用户浏览器中禁用cookie时,会话数据仍然可用。
我在网上搜索了一种方法,但是没有找到任何能很好解释的内容。我对php还是很陌生,但是具有Web应用程序的基本功能,除了保持会话数据不存储cookie之外。
据我了解,当您使用session_start()启动会话时,这将创建一个存储会话ID的cookie。然后可以使用Cookie或url传播在网站上传递此ID。我正在网站上运行的服务器不允许url传播,所以我必须使用cookie,但是如果有人在浏览器中关闭cookie,我将无法理解它的工作原理。
这是我在每个页面中都包含的header.php:
//var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var session = require('express-session');
//var csrf = require('csurf');
var logger = require('morgan');
var https = require('https');
var fs = require('fs');
var privateKey = fs.readFileSync('C:/Users/Ahmeed/Desktop/front/server.key', 'utf8');
var certificate = fs.readFileSync('C:/Users/Ahmeed/Desktop/front/server.cert', 'utf8');
var credentials = {key: privateKey, cert: certificate};
//var bodyParser = require('body-parser');
var signupRouter = require('./routes/signup.js');
var verificationRouter = require('./routes/verify.js');
var loginRouter = require('./routes/login.js');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser());
//app.use(express.csrf());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/signup', signupRouter);
app.use('/verify', verificationRouter);
app.use('/login', loginRouter);
var httpsServer = https.createServer(credentials, app);
httpsServer.listen(3000, function() {
console.log("server started listening on port 3000");
});
module.exports = app;