質問編集履歴

2

整理しました

2018/04/16 05:01

投稿

yuta.a
yuta.a

スコア14

test CHANGED
File without changes
test CHANGED
@@ -1,51 +1,151 @@
1
1
  cgiで会員制のページを作っています。
2
2
 
3
- ログイン機能があり、現在はセッション管理がさていないため、ブラウザで検索した際にログン後のページが出てきてしまいます
3
+ 仮にこをAサ
4
4
 
5
- がって、セッションが保存されていないときは、ログインページにリダイレクトるような仕組みを作りたいです
5
+ このAサイトにログインするめには、まったく別もののBサイトからAサイトログインページに遷移させます。
6
+
7
+ そしてこの時のログインは、Bサイトの会員情報を使ってログイン可能となります。
8
+
9
+ ログイン後Bサイトのセッション情報をAサイトのセッションに渡している仕組みです。
10
+
11
+ ※AサイトはPerl、BサイトはEC-cube PHPで作られています。
6
12
 
7
13
 
8
14
 
9
- Perlやcgiも全くの初心者ので教えていただきたいです。
15
+ 問題は、Aサイトを検索エンジンで検索した際に通常らログイン後にしか見れないページが表示されします。
10
16
 
11
- トでろ調べていますがまず~.pl書くか~.cgi書くかもわからないです。
17
+ そこで、セションが保存されて場合はログインページリダイレクトするようしたいです。
12
18
 
13
- 難しい機能はいらないで、とにかくブラウザ検索してログイン後のページアクセスた場合ログン画面遷移することができればいです。
19
+ Bサイトセッション情報をAサトのセッションにている仕組みはBサトのPHPてます。
14
20
 
21
+ ただBサイトから渡されたセッションをAサイトで有無をチェックする方法がわかりません。
15
22
 
16
-
17
- どうかお力をおかし下さい。
23
+ Perlは全く無知なので教えてただきたいです
18
24
 
19
25
  よろしくお願いいたします。
20
26
 
21
27
 
22
28
 
29
+ 下記参考URLです。
23
30
 
24
-
25
- ---------------------追記・補足------------------------------------------------
31
+ [リンク内容](http://perldoc.jp/docs/modules/CGI-Session-3.11/Session.pod)
26
32
 
27
33
 
28
34
 
29
35
 
30
36
 
31
- 現在はまだ何も書いてないです。
37
+ Aサイト:ログイン画面
32
38
 
39
+ ```CGI
40
+
33
- ほんとに手も足もでていないです......w
41
+ #!/usr/bin/perl
34
42
 
35
43
 
36
44
 
37
- 一応下記URLを参考にしようとしてました。
45
+ use CGI;
38
46
 
39
- [リンク内容](http://perldoc.jp/docs/modules/CGI-Session-3.11/Session.pod)
47
+ use CGI::Session;
40
48
 
41
49
 
42
50
 
43
- この問題のサイトを「Aサイト」とすると、
51
+ my $session = new CGI::Session("driver:File", undef, {Directory=>'/tmp'});
44
52
 
45
- まずこのサイトのログインページに行くには「Bサイト」のバナーをクリックしなければなりません。それが正規ルートになります。
46
53
 
47
- しかし、ブラウザで「Aサイト」の名前を検索すると本来ならログイン後に表示されるページがいくつかでます。
48
54
 
49
- 出てしまうのはしょうがないとして、それをクリクしたらそのままログイ表示されるペジに遷移してしまします。
55
+ # セションにタを格納
50
56
 
57
+ $session->param('f_name', 'Sherzod');
58
+
59
+ # or
60
+
61
+ $session->param(-name=>'l_name', -value=>'Ruzmetov');
62
+
63
+
64
+
65
+ # データの回収
66
+
67
+ my $f_name = $session->param('f_name');
68
+
69
+ # または
70
+
71
+ my $l_name = $session->param(-name=>'l_name');
72
+
73
+
74
+
75
+ ```
76
+
77
+
78
+
79
+ Bサイト:ログインのコントローラー
80
+
81
+ ```PHP
82
+
83
+ public function vet_job_login(Application $app, Request $request)
84
+
85
+ {
86
+
87
+ if ($app->isGranted('IS_AUTHENTICATED_FULLY')) {
88
+
89
+ log_info('認証済のためログイン処理をスキップ');
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+ $actionUrl='http://***/***/***';
98
+
99
+
100
+
101
+ $Customer = $app->user();
102
+
103
+ $customer_id = $Customer['id'];
104
+
105
+ $customer_mail = $Customer['email'];
106
+
107
+
108
+
109
+
110
+
111
+ $content="<form style='display:none' name='submit_form' id='submit_form' action='{$actionUrl}' method='post'>
112
+
113
+ <input type='text' name='customer_id' value='{$customer_id}'>
114
+
115
+ <input type='text' name='email' value='{$customer_mail}'>
116
+
117
+ </form>
118
+
119
+ <script type='text/javascript'>
120
+
51
- この場合のときにログイン画面に自動的に遷移するのが目的です。
121
+ document.submit_form.submit();
122
+
123
+ </script>";
124
+
125
+
126
+
127
+ exit($content);
128
+
129
+ }
130
+
131
+
132
+
133
+ $builder = $app['form.factory']
134
+
135
+ ->createNamedBuilder('', 'customer_login');
136
+
137
+
138
+
139
+ $form = $builder->getForm();
140
+
141
+ return $app->render('Mypage/vet_job_login.twig', array(
142
+
143
+ 'error' => $app['security.last_error']($request),
144
+
145
+ 'form' => $form->createView(),
146
+
147
+ ));
148
+
149
+ }
150
+
151
+ ```

1

補足

2018/04/16 05:00

投稿

yuta.a
yuta.a

スコア14

test CHANGED
@@ -1 +1 @@
1
- Peal:cgi セッション管理
1
+ Perl:cgi セッション管理
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- Pealやcgiも全くの初心者なので教えていただきたいです。
9
+ Perlやcgiも全くの初心者なので教えていただきたいです。
10
10
 
11
11
  ネットでいろいろ調べていますが、まず~.plに書くか~.cgiに書くかもわからないです。
12
12
 
@@ -17,3 +17,35 @@
17
17
  どうかお力をおかし下さい。
18
18
 
19
19
  よろしくお願いいたします。
20
+
21
+
22
+
23
+
24
+
25
+ ---------------------追記・補足------------------------------------------------
26
+
27
+
28
+
29
+
30
+
31
+ 現在はまだ何も書いてないです。
32
+
33
+ ほんとに手も足もでていないです......w
34
+
35
+
36
+
37
+ 一応下記URLを参考にしようとしてました。
38
+
39
+ [リンク内容](http://perldoc.jp/docs/modules/CGI-Session-3.11/Session.pod)
40
+
41
+
42
+
43
+ この問題のサイトを「Aサイト」とすると、
44
+
45
+ まずこのサイトのログインページに行くには「Bサイト」のバナーをクリックしなければなりません。それが正規ルートになります。
46
+
47
+ しかし、ブラウザで「Aサイト」の名前を検索すると本来ならログイン後に表示されるページがいくつかでます。
48
+
49
+ 出てしまうのはしょうがないとして、それをクリックしたらそのままログイン後に表示されるページに遷移してしまします。
50
+
51
+ この場合のときにログイン画面に自動的に遷移するのが目的です。