質問編集履歴

5

deleted

2023/05/07 09:37

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- 偽装不可能なコインシステムの実装
1
+ deleted question
test CHANGED
@@ -1 +1 @@
1
- honbunhonbunhonbunhonbunhonbunhonbun
1
+ deleteddeleteddeleteddeleteddeleted

4

honbun

2023/05/07 09:36

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,43 +1 @@
1
- ###前提
2
-
3
- Webサイトを作っています。
4
-
5
- レンタルサーバーで、HTTPS対応、HTML5+JavaScript+PHPで作成し、ユーザーデータはMySQLにて管理しています。
6
-
7
- JavaScriptで実装しているゲームで得たスコアに応じて、自分のアカウントにコイン(ゲーム内で使用可能)を追加する、と言うシステムです。
8
-
9
-
10
-
11
- ###現在の状況
12
-
13
- 現在、アカウントシステム・コインを追加するシステムはどちらも完成しています。しかしながら、ブラウザのF12開発者ツールで簡単にコインを追加することができてしまうのです。
14
-
15
-
16
-
17
- ###スクリプト
18
-
19
- 該当スクリプトはチート防止のため削除させていただきました。
20
-
21
- js: ajaxでphpを呼び出し、獲得コイン数を送信します。
1
+ honbunhonbunhonbunhonbunhonbunhonbun
22
-
23
- php: 受け取ったコイン数をログインしているアカウントのデータベースに追加します。
24
-
25
-
26
-
27
- ###偽装方法
28
-
29
- 該当スクリプトはチート防止のため削除させていただきました。
30
-
31
- ajaxの関数を呼び出すスクリプトです。
32
-
33
-
34
-
35
- ###質問
36
-
37
- 上記の状況において、偽装方法をより複雑にするか、偽装不可能なコインシステムを作るにはどうすればよいでしょうか。
38
-
39
-
40
-
41
- ###追記
42
-
43
- ゲーム類は全てJavaScriptで書かれています。勝敗を競うものではなく、自分ひとりでハイスコアを目指して遊べるタイプのものです。

3

質問の目的達成の為。

2018/01/08 12:34

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -16,250 +16,28 @@
16
16
 
17
17
  ###スクリプト
18
18
 
19
- ```JS
19
+ 該当スクリプトはチート防止のため削除させていただきました。
20
20
 
21
- function coins (coins, user) {
21
+ js: ajaxでphpを呼び出し、獲得コイン数を送信します。
22
22
 
23
- if (coins == 0) {
24
-
25
- return false;
26
-
27
- } else {
28
-
29
- result = $.ajax({
30
-
31
- type: "POST",
32
-
33
- url: "/~/coins.php",
34
-
35
- async: false,
36
-
37
- data: {coins: coins, user: user},
38
-
39
- success: function(result) {
40
-
41
- var notification = document.querySelector(".mdl-js-snackbar");
42
-
43
- switch (result) {
44
-
45
- case "0":
46
-
47
- document.getElementById("nowCoins").innerHTML = get_coins();
48
-
49
- if (coins > 0 && !user) {
50
-
51
- notification.MaterialSnackbar.showSnackbar(
52
-
53
- {
54
-
55
- message: coins + "コインゲット!",
56
-
57
- }
58
-
59
- );
60
-
61
- }
62
-
63
- break;
64
-
65
- case "1":
66
-
67
- notification.MaterialSnackbar.showSnackbar(
68
-
69
- {
70
-
71
- message: "コインが不足しています。",
72
-
73
- }
74
-
75
- );
76
-
77
- break;
78
-
79
- case "2":
80
-
81
- document.getElementById("nowCoins").innerHTML = get_coins();
82
-
83
- notification.MaterialSnackbar.showSnackbar(
84
-
85
- {
86
-
87
- message: user + "さんに" + coins + "コインをプレゼントしました。",
88
-
89
- }
90
-
91
- );
92
-
93
- break;
94
-
95
- case "3":
96
-
97
- break;
98
-
99
- case "4":
100
-
101
- notification.MaterialSnackbar.showSnackbar(
102
-
103
- {
104
-
105
- message: "エラーが発生しました。",
106
-
107
- }
108
-
109
- );
110
-
111
- break;
112
-
113
- case "5":
114
-
115
- notification.MaterialSnackbar.showSnackbar(
116
-
117
- {
118
-
119
- message: "ユーザー" + user + "は存在しません。",
120
-
121
- }
122
-
123
- );
124
-
125
- break;
126
-
127
- }
128
-
129
- }
130
-
131
- }).responseText;
132
-
133
- switch (result) {
134
-
135
- case "0":
136
-
137
- case "2":
138
-
139
- return true;
140
-
141
- break;
142
-
143
- case "1":
144
-
145
- case "3":
146
-
147
- case "4":
148
-
149
- return false;
150
-
151
- break;
152
-
153
- }
154
-
155
- }
156
-
157
- }
158
-
159
- ```
160
-
161
- ```PHP
162
-
163
- <?php
164
-
165
- if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
166
-
167
- //ログインしているか確認するクリプト。$isLogin真偽値で格納
23
+ php: 受け取ったコイン数をログインしているアカウントのデータベースに追加します
168
-
169
- include($_SERVER["DOCUMENT_ROOT"] . "/~/isLogin.php");
170
-
171
- if ($isLogin) {
172
-
173
- //現在所持しているコイン数を取得するスクリプト。$nowCoinsに格納。
174
-
175
- include($_SERVER["DOCUMENT_ROOT"] . "/~/nowCoins.php");
176
-
177
- if (empty($_POST["user"])) {
178
-
179
- //自分のコイン増減するスクリプト
180
-
181
- if ($_POST["coins"] > 0 || abs($_POST["coins"]) <= $nowCoins) {
182
-
183
- $st = $pdo->prepare("UPDATE users SET coins=coins+? WHERE name=? and auto_login=?");
184
-
185
- $st->execute(array($_POST["coins"], $_COOKIE["username"], $_COOKIE["auto_login"]));
186
-
187
- echo 0;
188
-
189
- } else {
190
-
191
- echo 1;
192
-
193
- }
194
-
195
- } else {
196
-
197
- //コインを他人にプレゼントするスクリプト
198
-
199
- if ($_POST["coins"] > 0 && $_POST["coins"] <= $nowCoins) {
200
-
201
- $st = $pdo->query("SELECT * FROM users WHERE name='" . $_POST["user"] . "'");
202
-
203
- if ($st->fetch()) {
204
-
205
- $st = $pdo->prepare("UPDATE users SET coins=coins+? WHERE name=? and auto_login=?");
206
-
207
- $st->execute(array(-1 * $_POST["coins"], $_COOKIE["username"], $_COOKIE["auto_login"]));
208
-
209
- $st = $pdo->prepare("UPDATE users SET coins=coins+? WHERE name=?");
210
-
211
- $st->execute(array($_POST["coins"], $_POST["user"]));
212
-
213
- echo 2;
214
-
215
- } else {
216
-
217
- echo 5;
218
-
219
- }
220
-
221
- } else {
222
-
223
- echo 1;
224
-
225
- }
226
-
227
- }
228
-
229
- } else {
230
-
231
- echo 3;
232
-
233
- }
234
-
235
- } else {
236
-
237
- echo 4;
238
-
239
- }
240
-
241
- ?>
242
-
243
- ```
244
24
 
245
25
 
246
26
 
247
27
  ###偽装方法
248
28
 
249
- F12開発者ツconsoleに
29
+ 該当スクリプトはチト防止ため削除させいただきました。
250
30
 
251
- ```JS
31
+ ajaxの関数を呼び出すスクリプトです。
252
32
 
253
- coins(100);
254
33
 
255
- ```
256
-
257
- などと実行するだけ。
258
34
 
259
35
  ###質問
260
36
 
261
37
  上記の状況において、偽装方法をより複雑にするか、偽装不可能なコインシステムを作るにはどうすればよいでしょうか。
262
38
 
39
+
40
+
263
41
  ###追記
264
42
 
265
43
  ゲーム類は全てJavaScriptで書かれています。勝敗を競うものではなく、自分ひとりでハイスコアを目指して遊べるタイプのものです。

2

2018/01/08 12:34

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  レンタルサーバーで、HTTPS対応、HTML5+JavaScript+PHPで作成し、ユーザーデータはMySQLにて管理しています。
6
6
 
7
- JavaScriptで実装しているゲームの成績に応じて、自分のアカウントにコイン(ゲーム内で使用可能)を追加する、と言うシステムです。
7
+ JavaScriptで実装しているゲームで得たスコアに応じて、自分のアカウントにコイン(ゲーム内で使用可能)を追加する、と言うシステムです。
8
8
 
9
9
 
10
10
 

1

2018/01/07 07:55

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -259,3 +259,7 @@
259
259
  ###質問
260
260
 
261
261
  上記の状況において、偽装方法をより複雑にするか、偽装不可能なコインシステムを作るにはどうすればよいでしょうか。
262
+
263
+ ###追記
264
+
265
+ ゲーム類は全てJavaScriptで書かれています。勝敗を競うものではなく、自分ひとりでハイスコアを目指して遊べるタイプのものです。