バージョン選択

フォーラム

メニュー

オンライン状況

41 人のユーザが現在オンラインです。 (10 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 40
lendshoN もっと...

サイト内検索

質問 > 管理機能 > 指定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してログインしているかチェックできそうにも思いますが


----------------
PHPエンジニア。
EC-CUBEインテグレートパートナー。

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ページ以外のページにアクセスした場合でもリダイレクトが続いてしまいます、また、管理画面にアクセスするとエラーになってしまいます。


引用:

それかEccube/Application.phpかコントローラのフックポイント使うかあたりですかね。管理者や管理画面除外するにはこっちのほうが簡単ですね。


おっしゃっていたこちらの方法に関して詳しく教えて頂けないでしょうか?
コントローラやフックポイントに関してイマイチ理解しておらず..

恐れ入りますが何卒宜しくお願い致します。
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に慣れていないと実装が難しいのでこの方法でできるかご確認いただけないでしょうか


----------------
PHPエンジニア。
EC-CUBEインテグレートパートナー。

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>";
}
// 追加 ここまで
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,076名です
総投稿数は109,601件です

投稿数ランキング

1
seasoft
7364
2
468
3217
3
AMUAMU
2712
4
nanasess
2302
5
umebius
2085
6
yuh
1812
7
h_tanaka
1606
8
red
1567
9
mcontact
1229
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.