UPDATE:переменной сеанса не сохраняются на Iphone
Я использую .htaccess для перенаправления пользователей на определенную папку (/ вар/WWW/HTML/тест), который имел все эти файлы, когда они обращались мой веб-сайт. .htaccess, выглядел как этот
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule (?!^test(/.*|)$)^(.*)$ /test/$1 [NC,L]
</IfModule>
Когда я переместил все файлы в/вар/WWW/HTML и прокомментировал .htaccess строки .. Сеансы на Iphone начал работать ... Я понятия не имею, почему. Есть ли способ исправить это с помощью .htaccess?
---- Конец обновления -----
У меня есть функция AJAX, которая вызывает функцию входа пользователя и если пользователь/пароль правильны, то входит в систему пользователя. Он работает на рабочем столе, ноутбуке, телефонах samsung s3, но не на IPhone! Кажется, что $this->session->set_userdata('current_email', $email);
не устанавливает сеанс на IPHONE, поэтому перенаправляет пользователя на страницу входа. Я предполагаю, возможно, это потому, что cookie-файлы Safari отключены автоматически или что-то в этом роде. Каков наилучший способ обойти это, чтобы он работал на телефоне?
Аякса:
$.ajax({
url: site_url+"/user/login/"+email,
type: "post",
data: 'password='+password+'&email='+email,
success: function(response){
if(response == "success"){
window.location.href = site_url+"/user/invites";
}else{
alert("Password is not valid");
}
},
error: function(){
}
});
/пользователь/Войти функция PHP CodeIgniter
public function login($email)
{
$password = $this->input->post('password');
if($email != NULL){
$this->load->helper('string');
$this->load->model('user_model');
$this->load->library('session');
$user_status = $this->user_model->check_status($email, $password);
if (is_array($user_status) && $user_status['is_active']) {
$this->session->set_userdata('current_email', $email);
$this->session->set_userdata('user_id', $user_status['id']);
$this->session->set_userdata('unique_id', $user_status['unique_id']);
$this->session->set_userdata('is_active', 1);
echo "success"; die();
}
} die();
}
/пользователь/приглашает
public function invites($unique_id = NULL)
{
if($this->session->userdata('current_email') != FALSE){
$data['unique_id'] = $this->session->userdata('unique_id');
$data['current_email'] = $this->session->userdata('current_email');
if($data['unique_id']){
$data['invited_users'] = $this->user_model->get_invited_users($this->session->userdata('user_id'));
$data['user_details'] = $this->user_model->get_user_details($this->session->userdata('user_id'));
$this->template->write_view('header', 'templates/header2', $data);
$this->template->write_view('content', 'invites', $data);
// Render the template
$this->template->render();
}else{
redirect('welcome/index/1','refresh');
}
Это может быть проблема с кэшированием, см. Мой ответ на вопрос о возможном подходе. –
Вы пытались использовать собственные php-сессии '$ _SESSION ['current_email'] = $ email' вместо подхода codeigniters? – Jeemusu
@CodeCrack вы используете ключ шифрования для сеанса? можете ли вы разместить свой ** config.php ** о сеансах PLS? – sbaaaang