php - 为什么会话、服务器或浏览器让我无法登录?
问题描述
我已经使用我的“登录脚本”一段时间了,完全没有问题。
但直到最近我一直被注销。有时我可以在一小时内登录maby .. 有时.. 只需几分钟。我应该在我的代码中更改某些内容.. 还是这是 apache2/php 中的设置?
这是我的配置:
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
try { $db = new PDO("mysql:host={$db_host};dbname={$dbname};charset=utf8", $db_username, $db_password, $options); }
catch(PDOException $ex){ die("Failed to connect to the database: " . $ex->getMessage());}
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
//SET HEADER
header('Content-Type: text/html; charset=utf-8');
//START SESSION
if(!isset($_SESSION)){
session_start([
'cookie_lifetime' => 86400,
]);
}
我在每一页上都运行了这个配置。
这就是我登录后的检查方式
//CHECK IF USR IS LOGGED IN
if(empty($_SESSION['usr'])){
echo "<script>window.location = '/index.php'</script>";
die("Redirecting to index.php");
}
编辑
应该session_start();
在所有页面上运行?
我以前也有过,但不知什么if(!isset($_SESSION....
原因改成...
解决方案
根据PHP 文档:
session_start() 基于通过 GET 或 POST 请求或通过 cookie 传递的会话标识符创建会话或恢复当前会话。
要恢复会话,您需要start_session()
在每个请求上调用。
不需要
if (!isset($_SESSION)...
推荐阅读
- html - 在 spring initializr 上使用引导程序
- python - 有没有办法用 astropy 创建 .fits 马赛克?
- flutter - how to build multiple marker with different colours by using flutter table_calendar?
- awk - 如何在不通过命令行的情况下从 awk 脚本中读取多个文件?
- office365 - Excel Javascript 插件:如何在任务窗格中打开 ExecuteFunction 而不是新的 iframe?
- r - 建立递归回归
- html - 文本无法正确显示 html5
- javascript - 如何在js中的css中使用react spring添加三元运算符
- python - 如何在另一个数据帧上使用函数之间比较两个数据帧
- linux - 如何禁用 HAProxy?