Ignore:
Timestamp:
2013/08/27 00:19:10 (11 years ago)
Author:
shutta
Message:

#2311 (規約ページを経由せずに会員登録(入力ページ)が表示できてしまう)
会員登録(入力ページ)を開いた状態でヘッダーからログインを行うと、不正なページ移動エラーになってしまうのを修正。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_13-dev/data/class/pages/entry/LC_Page_Entry.php

    r23124 r23132  
    8282 
    8383        // PC時は規約ページからの遷移でなければエラー画面へ遷移する 
    84         if ($this->lfCheckReferer($_POST, $_SERVER['HTTP_REFERER']) === false) { 
     84        if ($this->lfCheckReferer() === false) { 
    8585            SC_Utils_Ex::sfDispSiteError(PAGE_ERROR, '', true); 
    8686        } 
     
    270270     * 1. 規約ページからの遷移かどうか 
    271271     * 2. PC及びスマートフォンかどうか 
    272      * 3. $post に何も含まれていないかどうか 
     272     * 3. 自分自身(会員登録ページ)からの遷移はOKとする 
    273273     * 
    274274     * @access protected 
    275      * @param  array   $post    $_POST のデータ 
    276      * @param  string  $referer $_SERVER['HTTP_REFERER'] のデータ 
    277275     * @return boolean kiyaku.php からの妥当な遷移であれば true 
    278276     */ 
    279     public function lfCheckReferer(&$post, $referer) 
    280     { 
     277    public function lfCheckReferer() 
     278    { 
     279        $arrRefererParseUrl = parse_url($_SERVER['HTTP_REFERER']); 
     280        $referer_urlpath = $arrRefererParseUrl['path']; 
     281 
     282        $kiyaku_urlpath = ROOT_URLPATH . 'entry/kiyaku.php'; 
     283 
     284        $arrEntryParseUrl = parse_url(ENTRY_URL); 
     285        $entry_urlpath = $arrEntryParseUrl['path']; 
     286 
     287        $allowed_urlpath = array( 
     288            $kiyaku_urlpath, 
     289            $entry_urlpath, 
     290        ); 
     291 
    281292        if (SC_Display_Ex::detectDevice() !== DEVICE_TYPE_MOBILE 
    282             && empty($post) 
    283             && (preg_match('/kiyaku.php/', basename($referer)) === 0)) { 
     293            && !in_array($referer_urlpath, $allowed_urlpath)) { 
    284294            return false; 
    285             } 
     295        } 
    286296 
    287297        return true; 
Note: See TracChangeset for help on using the changeset viewer.