小编Ale*_*o93的帖子

Codeigniter 会话在刷新时重置

经过一个月的尝试解决这个问题,并尝试了相关问题中的各种答案,我决定自己问这个问题。

这个问题发生在我们最近购买的新服务器上,相同的代码在本地主机和最后一台服务器上运行良好。但这可能与代码有关。

会话已正确创建并设置了令牌,var_dump 显示了这一点。但是当用户尝试登录时,重定向到访问功能后,没有设置 Session 令牌,因此不会发生登录。

即使在同一页面上,如果刷新,__ci_last_regenerate(获取上次重新生成 Session 的时间)是当前时间,并在每次刷新后更改。

在 var/lib/php/session 中,每次刷新后都会创建两个不同的文件,不知道为什么。这里的图片:

在此处输入图片说明

19 秒的那个有正确的数据(时间和令牌),最后一个只有时间。

此外,我们最近向站点添加了一个新的子域,因此我们在同一台服务器中有两个不同的子域。

这是会话配置:

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
Run Code Online (Sandbox Code Playgroud)

还尝试了 DB 驱动程序,它在表上生成了 2(或有时 3 行)。配置是:

$config['sess_driver']= 'database';
$config['sess_cookie_name']= 'ci_session';
$config['sess_expiration']= 0;
$config['sess_save_path']= 'ci_sessions';
$config['sess_match_ip']= FALSE;
$config['sess_time_to_update']= 300;
$config['sess_regenerate_destroy']= FALSE;
$config['sess_use_database']= TRUE;
$config['sess_expire_on_close']= TRUE;
$config['sess_table_name']= 'ci_sessions';
Run Code Online (Sandbox Code Playgroud)

数据库的输出是它的列(id、ip、timestamp、data):

在此处输入图片说明

数据始终相同,在一种情况下最后一次重新生成包含时间和令牌,而在另一种情况下仅最后一次重新生成(每次刷新 2 行)。

PHP 是 7.2.7 。CodeIgniter 是 3.1.5。

如果需要,将提供所需的任何其他代码或服务器信息。

编辑 4/9: 根据一些用户的要求,还添加了这些 cookie 数据。

$config['cookie_domain'] …
Run Code Online (Sandbox Code Playgroud)

php session codeigniter-3

5
推荐指数
1
解决办法
4624
查看次数

变量附近的语法不正确

我正在SQL Server上使用HeidiSQL,试图创建一个插入后触发器,这是代码。

CREATE TRIGGER TR_After_Insert_User ON User1 AFTER INSERT
AS
BEGIN
    declare @userName varchar(24)
    declare @userLName varchar(20)
    declare @userSex varchar(10)

    select @userName = i.name from inserted i
    select @user1LName = i.lastname from inserted i
    select @userSex = i.gender from inserted i

    IF @userSex = 'Male'
       @userSex = 'M'
    ELSE
        @userSex = 'F'

    INSERT INTO db2.dbo.user2(name, lastname, gender) 
    VALUES (@legajoName, @legajoName, @legajoSexo)
END
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

'@userSex'附近的语法不正确

我已经尝试过不使用IF语句的情况,并且可以正常工作,所以问题就在那里。但是我需要那句话,因为第二个表中的“性别”字段是“字符”类型。

t-sql sql-server heidisql

3
推荐指数
1
解决办法
1724
查看次数

标签 统计

codeigniter-3 ×1

heidisql ×1

php ×1

session ×1

sql-server ×1

t-sql ×1