我最近继承了一个有效的网站代码,该代码是在PHP
中使用CodeIgnitor
设计的,我正在尝试进一步开发它。尝试本地(xampp
)本地运行时,我遇到了一个问题:
代码构建良好,将我带到了登录页面。我在这里使用ion-auth
登录,该操作成功继续,保存了会话(此方法有效)并继续到登录页面。 但是,登录后一旦加载任何页面,它都会立即注销用户并导航回登录页面。
与实时网站相比,唯一代码更改的是它所连接的数据库,基本URL和一些导航。这里可能是什么问题? xampp
,ion-auth
或某些配置会出现问题吗?
// log the user in
public function login()
{
$this->data['title'] = $this->lang->line('login_heading');
// validate form input
$this->form_validation->set_rules('identity', str_replace(':', '', $this->lang->line('login_identity_label')), 'required');
$this->form_validation->set_rules('password', str_replace(':', '', $this->lang->line('login_password_label')), 'required');
if ($this->form_validation->run() == true)
{
// check to see if the user is logging in
// check for "remember me"
$remember = (bool) $this->input->post('remember');
if ($this->ion_auth->login($this->input->post('identity'), $this->input->post('password'), $remember))
{
// if the login is successful
// redirect them back to the home page
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect('/', 'refresh');
}
else
{
// if the login was un-successful
// redirect them back to the login page
$this->session->set_flashdata('message', $this->ion_auth->errors());
redirect('auth/login', 'refresh'); // use redirects instead of loading views for compatibility with MY_Controller libraries
}
}
else
{
// the user is not logging in so display the login page
// set the flash data error message if there is one
$this->data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');
$this->data['identity'] = array('name' => 'identity',
'id' => 'identity',
'type' => 'text',
'value' => $this->form_validation->set_value('identity'),
);
$this->data['password'] = array('name' => 'password',
'id' => 'password',
'type' => 'password',
);
$this->_render_page('auth/login', $this->data);
}
}
按照马丁的建议,我尝试了session_start();
,它显示了以下内容:
A PHP Error was encountered
Severity: Warning
Message: ini_set(): A session is active.
You cannot change the session module's ini settings at this time
Filename: Session/Session.php
Line Number: 281
Backtrace:
File: C:\Programs\xampp\htdocs\modules\applications\azdemo\controllers\Shared.php
Line: 8
Function: __construct
File: C:\Programs\xampp\htdocs\modules\customers\azdemo\index.php
Line: 315
Function: require_once
答案 0 :(得分:1)
嘿,我遇到了同样的问题。它与 php5.6 和 php7.2 的 ion-auth 支持有关
他们对不同的 php 版本使用不同的散列技术。如果您升级了 php 版本,您可能需要检查 ion-auth 配置文件并更新哈希方法。
以下是 ion auth 文档中的一些内容:
<块引用>您可以选择 bcrypt(来自 PHP 5.3)或 argon2(来自 PHP 7.2)
文档链接:ION-Auth
如果它有帮助,请告诉我,如果您觉得有用,请点赞!
答案 1 :(得分:0)
临时解决方案通过将php7.2.6
降级为php5.5.38
解决了这个问题。某些情况可能需要升级某些库。由于本地域问题以及您无法轻易降级xampp的php版本的事实,我也从xampp
切换到mamp pro 4
。
希望这对以后的人有帮助。