質問 > 管理機能 > 指定URLからのアクセスのみ許可したい、リファラ設定 |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
bysk |
投稿日時: 2017/3/6 21:44
対応状況: −−−
|
半人前 登録日: 2016/5/26 居住地: 投稿: 22 |
指定URLからのアクセスのみ許可したい、リファラ設定 指定URLからのアクセスのみ許可したい、リファラ設定
[EC-CUBE] 3.0.10 [レンタルサーバ] hetemlサーバ [サーバーOS] Linux [PHP] PHP 5.4.27 [データベース] MySQL 5.6.13 [WEBサーバ] Apache [ブラウザ] Chrome/50.0.2661.102 [導入プラグインの有無] GmoPaymentGateway [やりたい事] ECCUBEとは別に有料会員サイトを運営しております その会員サイトの登録者のみ商品を購入できる様にしたい。 要は会員しかアクセスできないURLからECCUBEページへリファラを掛けたいです 下記の様なイメージです 指定URLからのアクセスのみ許可したい。 例) hoge.com/shop.php からのアクセスのみ許可 hoge.com/shop.php から以外のアクセスはテキストのみ表示 (会員サイトにログインしてhoge.com/shop.phpからアクセスして下さい) 下記のヒントは見つけたのですがイマイチどのファイルに設定すれば良いか分からずどなたかご教示頂ければ幸いです。 https://umebius.com/eccube/%E3%83%AA%E3%83%95%E3%82%A1%E3%83%A9%E3%83%BC%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%82%92%E5%88%B6%E9%99%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/ どうぞ宜しくお願い致します。 |
Yuya.u |
投稿日時: 2017/3/6 22:21
対応状況: −−−
|
半人前 登録日: 2017/3/6 居住地: 投稿: 24 |
Re: 指定URLからのアクセスのみ許可したい、リファラ設定 全ページに同じアクセス制限するなら、html/index.phpに通常のPHPで書けば良いのではないでしょうか。
それかEccube/Application.phpかコントローラのフックポイント使うかあたりですかね。管理者や管理画面除外するにはこっちのほうが簡単ですね。 最初に正常リファラのアクセスがあった場合はセッションにフラグを保存して、フラグがあればリファラなしで通せば良いのではないでしょうか。 会員サイトもPHPでできてるならシステムincludeしてログインしているかチェックできそうにも思いますが
|
bysk |
投稿日時: 2017/3/9 0:38
対応状況: −−−
|
半人前 登録日: 2016/5/26 居住地: 投稿: 22 |
Re: 指定URLからのアクセスのみ許可したい、リファラ設定 Yuya.u様
ご回答ありがとうございます! 色々試してみたのですがイマイチ上手くいかずに困っております。 現状、index.phpに下記の様に記述 _______________________________ session_start(); $referrer = $_SERVER['HTTP_REFERER']; if ($referrer == "xxx.com/shop.php"){ $_SESSION['judge'] = "OK"; } else { $_SESSION['judge'] = "NG"; } if ( $_SESSION['judge'] == "OK"){ //OKの場合 // インストールされてなければインストーラにリダイレクト if ($app['config']['eccube_install']) { $app->initialize(); $app->initializePlugin(); if ($app['config']['http_cache']['enabled']) { $app['http_cache']->run(); } else { $app->run(); } } else { $location = str_replace('index.php', 'install.php', $_SERVER['SCRIPT_NAME']); header('Location:'.$location); exit; } } else { //NGの場合 header( "Location: xxx.com/ng.php" ) ; // 終了 exit ; } _______________________________ $_SESSION['judge']が"OK"の場合、通常通りトップページにアクセス許可し、"NG"の場合ng.phpにリダイレクトとゆう処理にしましたがTOPへのアクセスは成功したのですがその後TOPページ以外のページにアクセスした場合でもリダイレクトが続いてしまいます、また、管理画面にアクセスするとエラーになってしまいます。 引用:
おっしゃっていたこちらの方法に関して詳しく教えて頂けないでしょうか? コントローラやフックポイントに関してイマイチ理解しておらず.. 恐れ入りますが何卒宜しくお願い致します。 |
Yuya.u |
投稿日時: 2017/3/9 0:56
対応状況: −−−
|
半人前 登録日: 2017/3/6 居住地: 投稿: 24 |
Re: 指定URLからのアクセスのみ許可したい、リファラ設定 引用:
$_SESSION['judge']が"OK"の場合、通常通りトップページにアクセス許可し、"NG"の場合ng.phpにリダイレクトとゆう処理にしましたがTOPへのアクセスは成功したのですがその後TOPページ以外のページにアクセスした場合でもリダイレクトが続いてしまいます、 こうしてみてはいかがでしょう。 $referrer = $_SERVER['HTTP_REFERER']; if ($referrer == "xxx.com/shop.php" || $_SESSION['judge'] == "OK"){ $_SESSION['judge'] = "OK"; } else { //何もしない } 引用: また、管理画面にアクセスするとエラーになってしまいます。 こちらは$_SERVER["REQUEST_URI"]を使って管理画面の場合はリダイレクトしないようにしてはいかがでしょうか。 フックポイントはSymfonyに慣れていないと実装が難しいのでこの方法でできるかご確認いただけないでしょうか
|
bysk |
投稿日時: 2017/3/9 19:26
対応状況: −−−
|
半人前 登録日: 2016/5/26 居住地: 投稿: 22 |
Re: 指定URLからのアクセスのみ許可したい、リファラ設定 Yuya.u様
ご返信ありがとうございます。 ご教示の通り記述しましたが無理の様でした.. ちなみに現状は下記の様に記述しております。 TOPはうまくいくのですが商品ページ等、下層ページには $_SESSION['judge']の値が引き継がれずにNG処理になってしまいます。 管理画面もNGのままですね.. // 追加 ここから session_start(); // リファラ取得 $referrer = $_SERVER['HTTP_REFERER']; // 指定ページからアクセスの場合 if ($referrer == "xxx.com/shop.php"){ $_SESSION['judge'] = "OK"; } else { $_SESSION['judge'] = "NG"; } // 現状のURL取得 $_SESSION['now_url'] = $_SERVER['REQUEST_URI']; //管理画面URL(ecadmin)が含まれている場合adminフラグ if(strpos($_SESSION['now_url'], "ecadmin") !== false){ // echo "含まれています<br>"; $_SESSION['admin'] = "admin"; }else{ $_SESSION['admin'] = "no_admin"; } //リファラOKと管理画面アクセスのチェック if ( $_SESSION['judge'] == "OK" || $_SESSION['admin'] == "admin"){ //OKの場合 // インストールされてなければインストーラにリダイレクト if ($app['config']['eccube_install']) { $app->initialize(); $app->initializePlugin(); if ($app['config']['http_cache']['enabled']) { $app['http_cache']->run(); } else { $app->run(); } } else { $location = str_replace('index.php', 'install.php', $_SERVER['SCRIPT_NAME']); header('Location:'.$location); exit; } } else { //NGの場合 echo "<!doctype html>"; echo "<html>"; echo "<head>"; echo "<meta charset=\"utf-8\">"; echo "</head>"; echo "<body>"; echo "<p>「会員限定Shopです。</p>"; echo "<p>ログイン後再度アクセスをお願いいたします。</p>"; echo "<br /><br /><br />"; echo "<a href=\"xxx.com/shop.php\">xxx.com/shop.php</a><br>"; echo "</body>"; echo "</html>"; } // 追加 ここまで |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |