From b5720557e86f494a07bb5a2a33f673e1c5215d05 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Sat, 27 Jul 2019 20:21:05 +0900 Subject: [PATCH] Improve session detection in install module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 세션 작동여부 확인과 session.auto_start 확인을 하나로 합침. - 세션에 기록된 플래그와 license_agreement 파일에 기록된 시간을 비교하도록 하여 예전에 기록된 플래그를 잘못 인식하지 않도록 함. --- modules/install/install.controller.php | 29 +++++++++++++------------- modules/install/lang/en.php | 4 +--- modules/install/lang/es.php | 4 +--- modules/install/lang/fr.php | 4 +--- modules/install/lang/ja.php | 4 +--- modules/install/lang/ko.php | 6 ++---- modules/install/lang/ru.php | 4 +--- modules/install/lang/tr.php | 4 +--- modules/install/lang/vi.php | 4 +--- modules/install/lang/zh-CN.php | 4 +--- modules/install/lang/zh-TW.php | 4 +--- 11 files changed, 25 insertions(+), 46 deletions(-) diff --git a/modules/install/install.controller.php b/modules/install/install.controller.php index f8662b28c..91f1106f5 100644 --- a/modules/install/install.controller.php +++ b/modules/install/install.controller.php @@ -296,7 +296,7 @@ class installController extends install } // Check permission - if(is_writable('./')||is_writable('./files')) + if(is_writable(RX_BASEDIR) || is_writable(RX_BASEDIR . 'files')) { $checklist['permission'] = true; } @@ -306,24 +306,22 @@ class installController extends install } // Check session availability - if(isset($_SESSION['license_agreement'])) + $license_agreement_time = intval(trim(FileHandler::readFile($this->flagLicenseAgreement))); + if(isset($_SESSION['license_agreement']) && (!$license_agreement_time || ($license_agreement_time == $_SESSION['license_agreement']))) { - $checklist['session'] = true; + if(ini_get('session.auto_start') == 0) + { + $checklist['session'] = true; + } + else + { + $checklist['session'] = false; + } } else { $checklist['session'] = false; } - - // Check session.auto_start - if(ini_get('session.auto_start') != 1) - { - $checklist['session_auto'] = true; - } - else - { - $checklist['session_auto'] = false; - } // Check curl if(function_exists('curl_init')) @@ -415,8 +413,9 @@ class installController extends install throw new Rhymix\Framework\Exception('msg_must_accept_license_agreement'); } - $_SESSION['license_agreement'] = true; - FileHandler::writeFile($this->flagLicenseAgreement, $_SERVER['REQUEST_TIME']); + $license_agreement_time = time(); + $_SESSION['license_agreement'] = $license_agreement_time; + FileHandler::writeFile($this->flagLicenseAgreement, $license_agreement_time . PHP_EOL); $this->setRedirectUrl(getNotEncodedUrl('', 'act', 'dispInstallCheckEnv')); } diff --git a/modules/install/lang/en.php b/modules/install/lang/en.php index f63000def..a02ecef31 100644 --- a/modules/install/lang/en.php +++ b/modules/install/lang/en.php @@ -25,14 +25,12 @@ $lang->install_checklist_title['json'] = 'json'; $lang->install_checklist_title['gd'] = 'gd'; $lang->install_checklist_title['mcrypt'] = 'mcrypt / openssl'; $lang->install_checklist_title['session'] = 'session'; -$lang->install_checklist_title['session_auto'] = 'session.auto_start setting'; $lang->install_checklist_title['db_support'] = 'DB support'; $lang->install_checklist_desc['php_version'] = '[Required] Rhymix supports only PHP Version %s or higher'; $lang->install_checklist_desc['php_version_warning'] = '[Recommend] Rhymix recommends only PHP Version %s or higher'; $lang->install_checklist_desc['permission'] = '[Required] Please create a \'files\' directory under the installation path and change its permissions to 777.'; $lang->install_checklist_desc['xml'] = '[Required] XML Library is needed for XML communication'; -$lang->install_checklist_desc['session'] = '[Required] PHP Session must be available'; -$lang->install_checklist_desc['session_auto'] = '[Required] PHP setting file\'s (php.ini) \'Session.auto_start\' must equal to zero in order for Rhymix to use the session'; +$lang->install_checklist_desc['session'] = '[Required] PHP Session must be available, and \'session.auto_start\' must be off in order to use the session.'; $lang->install_checklist_desc['iconv'] = 'Iconv should be installed in order to convert between UTF-8 and other language sets'; $lang->install_checklist_desc['gd'] = 'GD Library should be installed in order to use functions to convert images'; $lang->install_checklist_xml = 'Install XML Library'; diff --git a/modules/install/lang/es.php b/modules/install/lang/es.php index 9fa8e14d0..dc51d1f15 100644 --- a/modules/install/lang/es.php +++ b/modules/install/lang/es.php @@ -9,11 +9,9 @@ $lang->install_checklist_title['json'] = 'json'; $lang->install_checklist_title['gd'] = 'gd'; $lang->install_checklist_title['mcrypt'] = 'mcrypt / openssl'; $lang->install_checklist_title['session'] = 'session'; -$lang->install_checklist_title['session_auto'] = 'Configuración session.auto_start'; $lang->install_checklist_desc['permission'] = '[Requerido] La ruta de la instalación de Rhymix o el directorio de ./archivos deberia tener la atribución 777'; $lang->install_checklist_desc['xml'] = '[Requerido] Libreria XML es necesario para la comunicación de XML'; -$lang->install_checklist_desc['session'] = '[Requerido] La sesión de PHP debe estar disponible'; -$lang->install_checklist_desc['session_auto'] = '[Requerido] Para el uso de la sesion de Rhymix, el archivo php.ini deberia estar configurada session.auto_start=0'; +$lang->install_checklist_desc['session'] = '[Requerido] La sesión de PHP debe estar disponible y \'session.auto_start\' debe estar \'off\' para poder utilizar la sesión.'; $lang->install_checklist_desc['iconv'] = 'Para transformar UTF-8 y otra paquete del idioma deberia estar instalado el Iconv.'; $lang->install_checklist_desc['gd'] = 'Libreria GD deberia estar instalado para utilizar la funcion de convertir la imagen'; $lang->install_checklist_xml = 'Instalar Librería XML '; diff --git a/modules/install/lang/fr.php b/modules/install/lang/fr.php index 730772843..c1597358e 100644 --- a/modules/install/lang/fr.php +++ b/modules/install/lang/fr.php @@ -9,11 +9,9 @@ $lang->install_checklist_title['json'] = 'json'; $lang->install_checklist_title['gd'] = 'gd'; $lang->install_checklist_title['mcrypt'] = 'mcrypt / openssl'; $lang->install_checklist_title['session'] = 'session'; -$lang->install_checklist_title['session_auto'] = 'Configuration de session.auto_start'; $lang->install_checklist_desc['permission'] = '[Obligatoire] Chemin de l\'installation de Rhymix ou la permission de répertoire de ./files doit être 777'; $lang->install_checklist_desc['xml'] = '[Obligatoire] La bibliothèque de XML est nécessaire pour la communication de XML'; -$lang->install_checklist_desc['session'] = '[Obligatoire] La session PHP doit être disponible'; -$lang->install_checklist_desc['session_auto'] = '[Obligatoire] \'Session.auto_start\' dans le fichier de configuration pour PHP (php.ini) doit être égal à zéro car Rhymix utilise la session'; +$lang->install_checklist_desc['session'] = '[Obligatoire] La session PHP doit être disponible, et \'session.auto_start\' dans le fichier de configuration pour PHP (php.ini) doit être \'off\' car Rhymix utilise la session'; $lang->install_checklist_desc['iconv'] = 'Iconv doit être installé afin de convertir UTF-8 et des autres assortiments des langues'; $lang->install_checklist_desc['gd'] = 'La bibliothèque de GD doit être installé afin d\'utiliser la fonction à convertir des images'; $lang->install_checklist_xml = 'Installation la bibliothèque de XML'; diff --git a/modules/install/lang/ja.php b/modules/install/lang/ja.php index 2f37ce0b7..5162117df 100644 --- a/modules/install/lang/ja.php +++ b/modules/install/lang/ja.php @@ -25,14 +25,12 @@ $lang->install_checklist_title['json'] = 'json'; $lang->install_checklist_title['gd'] = 'gd'; $lang->install_checklist_title['mcrypt'] = 'mcrypt / openssl'; $lang->install_checklist_title['session'] = 'session'; -$lang->install_checklist_title['session_auto'] = 'session.auto_startの設定'; $lang->install_checklist_title['db_support'] = 'DBサポート'; $lang->install_checklist_desc['php_version'] = '[必修] %s以上のPHPバージョンでインストールが可能です。'; $lang->install_checklist_desc['php_version_warning'] = '[推奨] RhymixはPHP %sバージョン以上をおすすめします。'; $lang->install_checklist_desc['permission'] = '【必須】Rhymixのインストール先、または「./files」ディレクトリのパーミッションを「777」に設定してください。'; $lang->install_checklist_desc['xml'] = '【必須】XML通信のためにXMLライブラリが必要です。'; -$lang->install_checklist_desc['session'] = '【必須】PHPセッションが利用可能でなければなりません'; -$lang->install_checklist_desc['session_auto'] = '【必須】Rhymixでは、セッションを使用しているため、「php.ini」の設定を「session.auto_start=0」にしてください。'; +$lang->install_checklist_desc['session'] = '【必須】PHPセッションを使用することができなければならず、php.iniの設定でsession.auto_start= offである必要があります。'; $lang->install_checklist_desc['iconv'] = 'UTF-8と多言語サポート及び文字コード変換のため、「iconv」をインストールする必要があります。'; $lang->install_checklist_desc['gd'] = 'イメージ変換機能を使用するためには、「GDライブラリ」をインストールする必要があります。'; $lang->install_checklist_xml = 'XMLライブラリのインストール'; diff --git a/modules/install/lang/ko.php b/modules/install/lang/ko.php index 126d65e68..dfc914bd8 100644 --- a/modules/install/lang/ko.php +++ b/modules/install/lang/ko.php @@ -24,15 +24,13 @@ $lang->install_checklist_title['iconv'] = 'iconv / mbstring'; $lang->install_checklist_title['json'] = 'json'; $lang->install_checklist_title['gd'] = 'gd'; $lang->install_checklist_title['mcrypt'] = 'mcrypt / openssl'; -$lang->install_checklist_title['session'] = 'session'; -$lang->install_checklist_title['session_auto'] = 'session.auto_start 설정'; +$lang->install_checklist_title['session'] = '세션 지원'; $lang->install_checklist_title['db_support'] = 'DB 지원'; $lang->install_checklist_desc['php_version'] = '[필수] Rhymix를 설치하려면 PHP 버전이 %s 이상이어야 합니다.'; $lang->install_checklist_desc['php_version_warning'] = '[권장] Rhymix는 PHP %s 이상을 권장합니다.'; $lang->install_checklist_desc['permission'] = '[필수] Rhymix 설치 경로에 files 디렉토리를 생성하고 퍼미션을 777로 바꾸어 주십시오.'; $lang->install_checklist_desc['xml'] = '[필수] XML통신을 위하여 XML 라이브러리가 필요합니다.'; -$lang->install_checklist_desc['session'] = '[필수] PHP 세션을 사용할 수 있어야 합니다.'; -$lang->install_checklist_desc['session_auto'] = '[필수] Rhymix에서 세션 사용을 위해 php.ini 설정의 session.auto_start=0 이어야 합니다.'; +$lang->install_checklist_desc['session'] = '[필수] PHP 세션을 사용할 수 있어야 하며, php.ini 설정에서 session.auto_start = off 여야 합니다.'; $lang->install_checklist_desc['iconv'] = 'UTF-8과 다른 언어셋의 변환을 위한 iconv설치가 필요합니다.'; $lang->install_checklist_desc['gd'] = '이미지변환 기능을 사용하기 위해 GD라이브러리가 설치되어 있어야 합니다.'; $lang->install_checklist_xml = 'XML 라이브러리 설치'; diff --git a/modules/install/lang/ru.php b/modules/install/lang/ru.php index b6fb4496e..7172c8f67 100644 --- a/modules/install/lang/ru.php +++ b/modules/install/lang/ru.php @@ -9,11 +9,9 @@ $lang->install_checklist_title['json'] = 'json'; $lang->install_checklist_title['gd'] = 'gd'; $lang->install_checklist_title['mcrypt'] = 'mcrypt / openssl'; $lang->install_checklist_title['session'] = 'session'; -$lang->install_checklist_title['session_auto'] = 'session.auto_start настройка'; $lang->install_checklist_desc['permission'] = '[Требуется] Путь установки Rhymix или директория ./files должна иметь права доступа 777'; $lang->install_checklist_desc['xml'] = '[Требуется] XML Библиотека нужна для XML коммуникации'; -$lang->install_checklist_desc['session'] = '[Требуется] PHP сессия должна быть доступна'; -$lang->install_checklist_desc['session_auto'] = '[Требуется] Файл настроек PHP (php.ini) \'Session.auto_start\' должен быть равен нулю, чтобы Rhymix могла использовать сессии'; +$lang->install_checklist_desc['session'] = '[Требуется] Сеанс PHP должен быть доступен, и \'session.auto_start\' должен быть \'off\', чтобы использовать сеанс.'; $lang->install_checklist_desc['iconv'] = 'Iconv должна быть установлена для конвертирования между UTF-8 и иными языковыми кодировками'; $lang->install_checklist_desc['gd'] = 'GD Библиотека должна быть установлена для использования функции конвертироваия изображений'; $lang->install_checklist_xml = 'Установить XML библиотеку'; diff --git a/modules/install/lang/tr.php b/modules/install/lang/tr.php index c854bfd5c..014de2953 100644 --- a/modules/install/lang/tr.php +++ b/modules/install/lang/tr.php @@ -9,11 +9,9 @@ $lang->install_checklist_title['json'] = 'json'; $lang->install_checklist_title['gd'] = 'gd'; $lang->install_checklist_title['mcrypt'] = 'mcrypt / openssl'; $lang->install_checklist_title['session'] = 'session'; -$lang->install_checklist_title['session_auto'] = 'session.auto_start(otomatik.oturum_acma) ayarı'; $lang->install_checklist_desc['permission'] = '[Gerekli] Rhymix kurulum yolu ya da ./files directory yolunun yetkisi 777 olmalıdır'; $lang->install_checklist_desc['xml'] = '[Gerekli] XML iletişimi için XML kitaplığı gereklidir.'; -$lang->install_checklist_desc['session'] = '[Gerekli] PHP oturumu mevcut olmalıdır'; -$lang->install_checklist_desc['session_auto'] = '[Gerekli] PHP ayar dosyasındaki (php.ini) \'Session.auto_start\' Rhymix\'nin oturumu kullanabilmesi için sıfıra eşit olmalıdır'; +$lang->install_checklist_desc['session'] = '[Gerekli] PHP Oturumu kullanılabilir olmalı ve oturumu kullanmak için \'session.auto_start\' \'off\' olmalıdır.'; $lang->install_checklist_desc['iconv'] = 'Iconv, UTF-8 ve diğer dil ayarlarını değiştirebilmek için kurulmuş olmalıdır'; $lang->install_checklist_desc['gd'] = 'GD Kitaplığı, resim değiştirme özelliğini kullanabilmek için kurulmuş, olmalıdır'; $lang->install_checklist_xml = 'XML Kitaplığını Kur'; diff --git a/modules/install/lang/vi.php b/modules/install/lang/vi.php index ebe0b6a50..f962bbf71 100644 --- a/modules/install/lang/vi.php +++ b/modules/install/lang/vi.php @@ -4,11 +4,9 @@ $lang->install_progress_menu['language'] = 'Chọn ngôn ngữ cài đặt'; $lang->install_checklist_title['php_version'] = 'Phiên bản PHP'; $lang->install_checklist_title['permission'] = 'Điều khoản thư mục files'; $lang->install_checklist_title['session'] = 'session'; -$lang->install_checklist_title['session_auto'] = 'Thiết lập session.auto_start'; $lang->install_checklist_desc['permission'] = '[Bắt buộc] Thư mục cài đặt của Rhymix hay ./files directory phải CHMOD thành 777'; $lang->install_checklist_desc['xml'] = '[Bắt buộc] XML Library cần thiết cho việc truyền thông File XML.'; -$lang->install_checklist_desc['session'] = '[Bắt buộc] Phiên PHP phầi có sẵn'; -$lang->install_checklist_desc['session_auto'] = '[Bắt buộc] File thiết lập của PHP (php.ini) \'Session.auto_start\' phải là 0 theo thứ tự số cho phiên làm việc của Rhymix hoạt động.'; +$lang->install_checklist_desc['session'] = '[Bắt buộc] Phiên PHP phải có sẵn và \'session.auto_start\' phải là \'off\' để sử dụng phiên.'; $lang->install_checklist_desc['iconv'] = 'Iconv cần phải được cài đặt cho việc chuyển đổi ngôn ngữ thàng UTFF-8 của những ngôn ngữ khác.'; $lang->install_checklist_desc['gd'] = 'GD Library cần phải được cài đặt cho việc chuyển đổi hình ảnh.'; $lang->install_checklist_xml = 'Cài đặt XML Library'; diff --git a/modules/install/lang/zh-CN.php b/modules/install/lang/zh-CN.php index bf7a0cc02..56476a11f 100644 --- a/modules/install/lang/zh-CN.php +++ b/modules/install/lang/zh-CN.php @@ -17,11 +17,9 @@ $lang->install_checklist_title['json'] = 'json'; $lang->install_checklist_title['gd'] = 'gd'; $lang->install_checklist_title['mcrypt'] = 'mcrypt / openssl'; $lang->install_checklist_title['session'] = 'session'; -$lang->install_checklist_title['session_auto'] = 'session.auto_start 设置'; $lang->install_checklist_desc['permission'] = '[必须] 的安装路径或 ./files目录属性必须是777'; $lang->install_checklist_desc['xml'] = '[必须]为了 XML通讯,将需要XML库'; -$lang->install_checklist_desc['session'] = '[必须] PHP会话必须可用'; -$lang->install_checklist_desc['session_auto'] = '[必须] 为了使用缓冲功能,必须在php.ini当中设置 session.auto_start=0'; +$lang->install_checklist_desc['session'] = '[必须] PHP会话必须可用,必须在php.ini当中设置 session.auto_start = off'; $lang->install_checklist_desc['iconv'] = '为了UTF-8和其他语言环境之间的互相转换,必须安装iconv'; $lang->install_checklist_desc['gd'] = '为了使用图片转换功能,必须先得安装GD库'; $lang->install_checklist_xml = '安装XML库'; diff --git a/modules/install/lang/zh-TW.php b/modules/install/lang/zh-TW.php index 9d4e422e9..d47b8eeed 100644 --- a/modules/install/lang/zh-TW.php +++ b/modules/install/lang/zh-TW.php @@ -17,11 +17,9 @@ $lang->install_checklist_title['json'] = 'json'; $lang->install_checklist_title['gd'] = 'gd'; $lang->install_checklist_title['mcrypt'] = 'mcrypt / openssl'; $lang->install_checklist_title['session'] = 'session'; -$lang->install_checklist_title['session_auto'] = 'session.auto_start設置'; $lang->install_checklist_desc['permission'] = '[必須] Rhymix的資料夾或『./files』資料夾權限必須是『777』。'; $lang->install_checklist_desc['xml'] = '[必須] 必須要安裝『XML Library』,才能夠使用 XML 通訊。'; -$lang->install_checklist_desc['session'] = '[必須] PHP會話必須可用'; -$lang->install_checklist_desc['session_auto'] = '[必須] 在『php.ini』中必須要設定『session.auto_start=0』,才能使用暫存功能'; +$lang->install_checklist_desc['session'] = '[必須] PHP會話必須可用,在『php.ini』中必須要設定『session.auto_start = off』,才能使用暫存功能'; $lang->install_checklist_desc['iconv'] = '安裝『iconv』,才能使 UTF-8 和其他語言文字作互相轉換。'; $lang->install_checklist_desc['gd'] = '安裝『GD Library』才可以使用圖片轉換功能。'; $lang->install_checklist_xml = '安裝 XML Library';