【问题标题】:Codeigniter ci_sessions table storing ip address as 0.0.0.0 why? even when hosted I am getting 0.0.0.0Codeigniter ci_sessions 表存储 ip 地址为 0.0.0.0 为什么?即使托管我也得到 0.0.0.0
【发布时间】:2015-06-04 16:53:27
【问题描述】:

您好,在我的 codeigniter 中,我创建了带有以下字段的 ci_sessions 表

CREATE TABLE IF NOT EXISTS  `ci_sessions` (
    session_id varchar(40) DEFAULT '0' NOT NULL,
    ip_address varchar(45) DEFAULT '0' NOT NULL,
    user_agent varchar(120) NOT NULL,
    last_activity int(10) unsigned DEFAULT 0 NOT NULL,
    user_data text NOT NULL,
    PRIMARY KEY (session_id),
    KEY `last_activity_idx` (`last_activity`)
);

每个字段都工作正常,除了每个客户端存储为 0.0.0.0 的 ip 地址。我已经编辑了我的 config.php,如下所示。

$config['sess_cookie_name']     = 'ci_session';
$config['sess_expiration']      = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = TRUE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;

【问题讨论】:

  • 为什么你不能在插入查询中使用这个$this->input->ip_address();?
  • 您已将sess_use_database 设置为FALSE,那么您如何在数据库中获取记录?
  • 我在数据库中获取值,但对于 ip 地址,我得到 0.0.0.0
  • '0.0.0.0' 是当 IP 地址被视为无效(不匹配 ipv4 或 ipv6 标准)时 Input::ip_address() 方法的后备值。您在哪里托管?
  • @luciddreamz 我错过了什么??

标签: php codeigniter session-cookies codeigniter-url codeigniter-routing


【解决方案1】:

使用 Linode,您的应用很可能在代理之后。您可以找到您的代理 IP 并将其添加到 CodeIgniter 配置文件中的白名单(/application/config/config.php 的底部),或者按照 Linode's Nodebalancer Reference 上的说明使用 Apache mod_rpaf 模块重新映射 X_FORWARDED_FOR 到 REMOTE_ADDR。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 2011-04-09
    • 2017-08-05
    相关资源
    最近更新 更多